logo

גלה כוח מבלי להשתמש בפונקציית POW ב-C

הפונקציה pow() משמשת לחישוב החזקה של מספר שלם נתון. כעת במאמר זה נבין בעזרת תוכנית כיצד לחשב את ההספק של מספר שלם מבלי להשתמש בפונקציה pow() ב-C.

שימוש בלולאת for לקביעת העוצמה של מספר שלם נתון

תאר לעצמך שאתה צריך לאתר ^ ב. השיטה הקלה ביותר היא להכפיל את a ב-b פעמים באמצעות לולאה.

  • תן ל- a ^ b להיות הקלט. הבסיס הוא a, בעוד המעריך הוא b.
  • התחל בחזקת 1.
  • באמצעות לולאה, בצע את ההוראות הבאות פעמים
  • כוח = כוח * א
  • למערכת החשמל יש את הפתרון הסופי, a ^ ב.

בואו נבין טוב יותר את הגישה לעיל עם דוגמה של תוכנית ב-C:

javascript
 # 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' תגדל באחד עם כל קריאה רקורסיבית. כדי לקבל a ^ b, אנו קוראים לפונקציה הרקורסיבית b פעמיים.

  • תנו ל-Pow (a, b) להיות הפונקציה הרקורסיבית המשמשת לחישוב a ^ b.
  • פשוט החזר 1 אם b == 0; else, return Pow (a, b -1) * a.

בואו נבין טוב יותר את הגישה לעיל עם דוגמה של תוכנית ב-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) מורכבות החלל, מחסנית פנימית.