الأس هو أحد أكثر العمليات شيوعا في البرمجة. عادة ، يتم استخدام وظيفة الأسرى لهذا الغرض ، والذي يتوفر في المكتبة القياسية للغة ج. ومع ذلك ، في بعض الأحيان يصبح من الضروري رفع رقم إلى قوة دون استخدام هذه الوظيفة.
يمكنك تنفيذ الأس يدويا باستخدام حلقة ، وضرب الرقم في حد ذاته عدد معين من المرات. ومع ذلك ، فإن هذه الطريقة غير فعالة وذات فائدة قليلة عند العمل بقيم كبيرة. هناك طريقة أكثر مثالية ، والتي تقوم على خاصية درجة تسمى "العودية".
العودية هي العملية التي تستدعي فيها الوظيفة نفسها.
لرفع الرقم س إلى قوة موجبة ن بدون استخدام وظيفة الأسرى ، يمكنك كتابة الدالة العودية التالية:
إنت السلطة (إنت س ، إنت ن) {
إذا (ن = = 0)
عودة 1;
آخر
عودة س * السلطة (س ، ن-1);
}
- نحن رفعه إلى السلطة في ج دون استخدام وظيفة الأسرى
- طريقة التحول قليلا
- الطريقة العودية
- طريقة التكرار
- أمثلة التطبيق
- سؤال وجواب
- كيف يمكنني رفع رقم إلى قوة عدد صحيح موجب في لغة البرمجة ج دون استخدام وظيفة الأسرى?
- هل من الممكن رفع رقم إلى قوة سالبة دون استخدام وظيفة أسير الحرب في ج?
- كيف يمكنني رفع رقم إلى قوة الصفر دون استخدام وظيفة الأسرى في ج?
- هل هناك طريقة أكثر فعالية لأسي رقم دون استخدام وظيفة الأسرى في لغة البرمجة ج?
- هل من الممكن استخدام المشغل الرياضي ^ لأسي رقم في لغة البرمجة ج?
نحن رفعه إلى السلطة في ج دون استخدام وظيفة الأسرى
في لغة البرمجة ج ، فإنه يسمح لك لرفع عدد إلى قوة معينة. لكن في بعض الأحيان يصبح من الضروري تنفيذ الأس دون استخدام هذه الوظيفة. في مثل هذه الحالات ، يمكنك استخدام الخوارزمية الموضحة أدناه.
يمكن تنفيذ خوارزمية أس رقم باستخدام حلقة أو عودية. دعونا نفكر في تنفيذ بسيط باستخدام حلقة:
- إنشاء متغير لتخزين النتيجة وتعيين قيمة أولية من 1.
- هو 1).
- نكرر من 1 إلى قيمة الطاقة:
- اضرب النتيجة في الرقم الأصلي.
- إسنيغاتيفيريسولت هو 1 ، ثم نعود القيمة العكسية للنتيجة.
- Возвращаем значение результата.
Пример реализации данного алгоритма:
# تشمل
قوة مزدوجة (قاعدة مزدوجة ، الأس الدولي) {
نتيجة مزدوجة = 1;
إنت إيسنيغاتيفيريسولت = 0;
إذا (الأس < 0) {
قاعدة = 1 / قاعدة;
الأس = - الأس;
إيسنيغاتيفيريسولت = 1;
}
ل (إنت أنا = 1 ؛ أنا < = الأس ؛ أنا i) {
النتيجة * = قاعدة;
}
إذا (إيسنيغاتيفيريسولت) {
النتيجة = 1 / نتيجة;
}
نتيجة الإرجاع;
}
كثافة العمليات الرئيسية () {
قاعدة مزدوجة;
الباحث الأس;
برينتف ("أدخل القاعدة:");
سكانف ("٪لف " ، وقاعدة);
برينتف ("أدخل الأس:");
المسح الضوئي ("٪د " ، والأس);
النتيجة المزدوجة = القوة (الأساس ، الأس);
برينتف ("٪.2و رفعت إلى قوة ٪د هو٪.2 واو
"،الأساس ، الأس ، النتيجة);
العودة 0;
}
لرفع عدد إلى السلطة. يتم عرض النتيجة على الشاشة بدقة منزلتين عشريتين.
في لغة البرمجة ج.
طريقة التحول قليلا
في لغة البرمجة سي ، يمكنك رفع رقم إلى قوة باستخدام طريقة تحويل البت. تعتمد هذه الطريقة على خاصية نظام الأرقام الثنائية ، والذي يسمح لك بزيادة أو تقليل الرقم بسرعة عن طريق ضرب أو إجراء قسمة عدد صحيح في 2.
لرفع الرقم أ إلى قوة ب ، يمكننا استخدام الخوارزمية التالية:
- تهيئة متغير النتيجة مع القيمة 1 ، والتي سوف تخزن نتيجة الأس
- طالما ب أكبر من 0 ، نقوم بتنفيذ الإجراءات التالية:
- إذا ب هو رقم فردي ، ثم اضرب الناتج في أ
- وتقسيم على 2 باستخدام التحول قليلا إلى اليمين
- نرفع ب إلى قسمة عدد صحيح على 2 ، أيضا باستخدام إزاحة بت إلى اليمين
- إرجاع قيمة النتيجة
وهكذا ، في كل تكرار ، نقسم الرقم ب إلى النصف ، وإذا كان فرديا ، فاضرب النتيجة في أ. هذا يسمح لنا برفع رقم بكفاءة إلى أي قوة باستخدام عمليات البت فقط.
Пример реализации этого алгоритма на языке C:
#include
int power(int a, int b) {
int result = 1;
while (b > 0) {
if (b & 1) {
result *= a;
}
a >>= 1;
b >>= 1;
}
return result;
}
int main() {
int a = 2;
int b = 5;
int result = power(a, b);
printf("%d^%d = %d
", a, b, result);
return 0;
}
В данном примере мы возводим число 2 в степень 5 с использованием метода битового сдвига. Результатом будет число 32.
Рекурсивный метод
الطريقة العودية هي طريقة لحل مشكلة عن طريق تسمية نفسها.
في هذه الحالة ، يمكننا استخدام العودية لأسي رقم.
لتنفيذ هذه الطريقة ، سوف نحتاج إلى وظيفة من شأنها أن تأخذ معلمتين: الرقم أ وقوة ن.
سيتم رفع الرقم الأصلي إلى قوة عن طريق الضرب المتكرر في نفسه.
في نفس الوقت ، لكل استدعاء دالة ، سنخفض الدرجة بمقدار واحد حتى نصل إلى درجة تساوي 0.
هنا مثال على تنفيذ هذه الطريقة في ج:
# تشمل
// دالة تكرارية لرفع الرقم أ إلى قوة ن
قوة كثافة العمليات (كثافة العمليات أ ، كثافة العمليات ن) {
// Базовый случай: if степень равна 0, возвращаем 1
if (n == 0)
return 1;
// Рекурсивный шаг: умножение числа a на результат, полученный при уменьшении степени на 1
return a * power(a, n - 1);
}
int main() {
int a, n;
printf("Введите число: ");
scanf("%d", &a);
printf("Введите степень: ");
scanf("%d", &n);
int result = power(a, n);
printf("%d в степени %d равно %d
", a, n, result);
return 0;
}
عند تنفيذ هذا الرمز ، سيطلب البرنامج رقم ودرجة الارتفاع ، ثم يقوم بإخراج النتيجة.
على سبيل المثال ، إذا أدخلنا الرقم 2 وقوة 3 ، فسيقوم البرنامج بإخراج النتيجة: "2 إلى قوة 3 هي 8".
طريقة التكرار
طريقة التكرار هي واحدة من الطرق لرفع عدد إلى قوة دون استخدام وظيفة الأسرى في اللغة ج. يعتمد على ضرب رقم بشكل متكرر في حد ذاته.
- القيمة هي 1 ، لأن أي رقم مرفوع إلى قوة الصفر هو 1.
- من 0 إلى قيمة الدرجة.
- حسب الرقم الأصلي.
- سيحتوي على نتيجة رفع الرقم إلى القوة المحددة.
مثال على الكود الذي ينفذ طريقة التكرار:
"'ج
# تشمل
قوة الطفو (قاعدة الطفو ، الأس الدولي) {
نتيجة تعويم = 1;
الباحث الأول;
إلى عن على (أنا = 0 ؛ أنا < الأس ؛ أنا i) {
النتيجة * = قاعدة;
}
نتيجة الإرجاع;
}
كثافة العمليات الرئيسية () {
قاعدة تعويم = 2.5;
الباحث الأس = 3;
نتيجة التعويم = القوة (الأساس ، الأس);
برينتف ("٪.2و ^ ٪ د=٪.2 واو
"،الأساس ، الأس ، النتيجة);
العودة 0;
}
«`
يأخذ حجتين: قاعدة ودرجة. يستخدم طريقة التكرار لحساب النتيجة ، والتي يتم عرضها بعد ذلك على الشاشة.
أمثلة التطبيق
ارفع الرقم 2 إلى قوة:
، والتي سوف تخزن النتيجة:
كثافة العمليات ن = 1;تعيين الرقم المراد رفعه إلى قوة ، على سبيل المثال ، 2:
قاعدة كثافة العمليات = 2;تعيين الأس ، على سبيل المثال ، 5:
الأس الدولي = 5;- ن * = قاعدة;
- طباعة النتيجة:
"،ن);
ارفع الرقم 3 إلى قوة:
إنشاء متغيرn
سيؤدي ذلك إلى تخزين النتيجة:كثافة العمليات ن = 1;
تعيين الرقم المراد رفعه إلى قوة ، على سبيل المثال ، 3:- ل (إنت أنا = 0 ؛ أنا < الأس ؛ أنا i) {
}
| طباعة النتيجة: |
برينتف ("3 إلى قوة 4 يساوي ٪ د
"،ن);
إخراج وحدة التحكم:
3 إلى قوة 4 هو 81
سؤال وجواب
كيف يمكنني رفع رقم إلى قوة عدد صحيح موجب في لغة البرمجة ج دون استخدام وظيفة الأسرى?
لرفع رقم إلى قوة عدد صحيح موجب في لغة البرمجة ج ، يمكنك استخدام حلقة والضرب. في هذه الحالة ، من الضروري تعيين القيمة الأولية للنتيجة إلى 1 ، ثم ضربها في الرقم الأصلي في الدورة ن مرات ، أين ن هي قيمة الدرجة. على سبيل المثال ، إذا كنت بحاجة إلى رفع الرقم س إلى قوة ن ، فيمكنك استخدام الخوارزمية التالية:
Ow الأسرىow?
لا ، لا يمكنك رفع رقم إلى قوة سالبة دون استخدام وظيفة الأسرى في لغة البرمجة سي. تم تصميم وظيفة الأسرى للتعامل مع رفع الأرقام إلى أي قوة ، سواء كانت موجبة أو سالبة أو صفرية. إذا كنت ترغب في رفع رقم إلى قوة سالبة في ج ، فستحتاج إلى استخدام وظيفة الأسرى.