logo

اكتشف الطاقة دون استخدام وظيفة POW في C

يتم استخدام الدالة pow() لحساب قوة عدد صحيح معين. الآن في هذه المقالة سوف نفهم بمساعدة أحد البرامج كيفية حساب قوة عدد صحيح دون استخدام الدالة pow() في لغة C.

استخدام حلقة for لتحديد قوة عدد صحيح معطى

تخيل أنك بحاجة إلى تحديد موقع ^ ب. أسهل طريقة هي ضرب a في b باستخدام حلقة.

خريطة الآلة الكاتبة
  • دع a ^ b يكون الإدخال. الأساس هو a، بينما الأس هو b.
  • ابدأ بقوة 1.
  • باستخدام حلقة، قم بتنفيذ التعليمات التالية ب مرات
  • القوة = القوة * أ
  • نظام الطاقة لديه الحل النهائي، أ ^ ب.

دعونا نفهم النهج المذكور أعلاه بشكل أفضل مع مثال لبرنامج في لغة C:

 # include # include # include # include # include int Pow ( int a , int b ) { int power = 1 , i ; for ( i = 1 ; i <= b ; + i ) { power="power" * a } return int main ( long base , exponent printf ' enter : scanf % d & ^ pow < pre> <p> <strong>Output:</strong> </p> <pre> Enter Base: 5 Enter Power: 3 5 ^ 3 = 125 .......................... Process executed in 3.22 seconds Press any key to continue. </pre> <p> <strong>Explanation</strong> </p> <p>The code above has an O (N) time complexity, where N is the exponent. O is the space complexity (1).</p> <h3>Using While loop:</h3> <pre> # include # include # include # include # include int main ( ) { int n , exp , exp1 ; long long int value = 1 ; printf ( &apos; enter the number and its exponential :  n  n &apos; ) ; scanf ( &apos; % d % d &apos; , &amp; n , &amp; exp ) ; exp1 = exp ; // storing original value for future use // same as while ( ( - - exp ) ! = - 1 ) while ( exp - - &gt; 0 ) { value * = n ; // multiply n to itself exp times } printf ( &apos;  n  n % d ^ % d = % l l d  n  n &apos; , n , exp1 , value ) ; return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> enter the number and its exponential : 5 4 5 ^ 6 = 625 .......................... Process executed in 0.11 seconds Press any key to continue. </pre> <p> <strong>Explanation</strong> </p> <p>Long Long Int is twice as large as Long Int. The format specifier for long long int is percent lld.</p> <h2>Using Recursion to find the Power of Given Integer</h2> <p>Assume that a ^ b is the input. The power of &apos;a&apos; will increase by one with each recursive call. To obtain a ^ b, we call the recursive function b twice.</p> <ul> <li>Let Pow ( a, b ) be the recursive function used to calculate a ^ b.</li> <li>Simply return 1 if b == 0; else, return Pow (a, b -1) * a.</li> </ul> <p> <strong>Let&apos;s understand the above approach better with an example of a program in C:</strong> </p> <pre> # include # include # include # include # include int Pow ( int a , int b ) { if ( b = = 0 ) return 1 ; else return Pow ( a , b - 1 ) * X ; } int main ( ) { long long int base , exponent ; printf ( &apos; enter Base : &apos; ) ; scanf ( &apos; % d &apos; , &amp; base ) ; printf ( &apos; enter Power : &apos; ) ; scanf ( &apos; % d &apos; , &amp; exponent ) ; printf ( &apos; % d ^ % d = % d &apos; , base , exponent , Pow ( base , exponent ) ) ; return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> Enter Base: 5 Enter Power: 4 5 ^ 4 = 625 .......................... Process executed in 1.22 seconds Press any key to continue. </pre> <p> <strong>Explanation:</strong> </p> <p>In the above example of a code in C, time complexity would be exponent N, O(N) &amp; O(N) space complexity, internal stack.</p> <hr></=>

توضيح

يحتوي الكود أعلاه على تعقيد زمني O (N)، حيث N هو الأس. O هو تعقيد الفضاء (1).

استخدام حلقة while:

 # include # include # include # include # include int main ( ) { int n , exp , exp1 ; long long int value = 1 ; printf ( &apos; enter the number and its exponential :  n  n &apos; ) ; scanf ( &apos; % d % d &apos; , &amp; n , &amp; exp ) ; exp1 = exp ; // storing original value for future use // same as while ( ( - - exp ) ! = - 1 ) while ( exp - - &gt; 0 ) { value * = n ; // multiply n to itself exp times } printf ( &apos;  n  n % d ^ % d = % l l d  n  n &apos; , n , exp1 , value ) ; return 0; } 

انتاج:

اقتطاع وحذف الفرق
 enter the number and its exponential : 5 4 5 ^ 6 = 625 .......................... Process executed in 0.11 seconds Press any key to continue. 

توضيح

Long Long Int هو ضعف حجم Long Int. محدد التنسيق لـ long long int هو بالمائة lld.

استخدام العودية للعثور على قوة عدد صحيح معين

افترض أن a ^ b هو الإدخال. ستزداد قوة 'a' بمقدار واحد مع كل استدعاء متكرر. للحصول على ^ b، نسمي الدالة العودية b مرتين.

  • اجعل Pow ( a, b ) هي الدالة العودية المستخدمة لحساب a ^ b.
  • ما عليك سوى إرجاع 1 إذا كان b == 0; وإلا، قم بإرجاع الأسرى (أ، ب -1) * أ.

دعونا نفهم النهج المذكور أعلاه بشكل أفضل مع مثال لبرنامج في لغة C:

 # include # include # include # include # include int Pow ( int a , int b ) { if ( b = = 0 ) return 1 ; else return Pow ( a , b - 1 ) * X ; } int main ( ) { long long int base , exponent ; printf ( &apos; enter Base : &apos; ) ; scanf ( &apos; % d &apos; , &amp; base ) ; printf ( &apos; enter Power : &apos; ) ; scanf ( &apos; % d &apos; , &amp; exponent ) ; printf ( &apos; % d ^ % d = % d &apos; , base , exponent , Pow ( base , exponent ) ) ; return 0; } 

انتاج:

تسجيل الذاكرة
 Enter Base: 5 Enter Power: 4 5 ^ 4 = 625 .......................... Process executed in 1.22 seconds Press any key to continue. 

توضيح:

في المثال أعلاه للكود في لغة C، سيكون التعقيد الزمني هو التعقيد الفضائي الأسي N وO(N) وO(N) والمكدس الداخلي.