logo

Zistite výkon bez použitia funkcie POW v C

Funkcia pow() sa používa na výpočet mocniny daného celého čísla. Teraz v tomto článku pomocou programu pochopíme, ako vypočítať mocninu celého čísla bez použitia funkcie pow() v C.

Použitie cyklu for na určenie mocniny daného celého čísla

Predstavte si, že potrebujete nájsť ^ b. Najjednoduchší spôsob je vynásobiť a krát b pomocou slučky.

  • Nech a ^ b je vstup. Základom je a, zatiaľ čo exponent je b.
  • Začnite so silou 1.
  • Pomocou slučky vykonajte nasledujúce pokyny b-krát
  • sila = sila * a
  • Energetický systém má konečné riešenie, a ^ b.

Poďme lepšie porozumieť vyššie uvedenému prístupu na príklade programu v 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></=>

Vysvetlenie

Vyššie uvedený kód má časovú zložitosť O (N), kde N je exponent. O je priestorová zložitosť (1).

Použitie slučky 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; } 

Výkon:

 enter the number and its exponential : 5 4 5 ^ 6 = 625 .......................... Process executed in 0.11 seconds Press any key to continue. 

Vysvetlenie

Long Long Int je dvakrát väčší ako Long Int. Špecifikátor formátu pre long long int je percent lld.

Použitie rekurzie na nájdenie sily daného celého čísla

Predpokladajme, že a ^ b je vstup. Sila 'a' sa zvýši o jednotku s každým rekurzívnym volaním. Aby sme získali a ^ b, zavoláme rekurzívnu funkciu b dvakrát.

  • Nech Pow ( a, b ) je rekurzívna funkcia použitá na výpočet a ^ b.
  • Jednoducho vráťte 1, ak b == 0; inak vráťte Pow (a, b -1) * a.

Poďme lepšie porozumieť vyššie uvedenému prístupu na príklade programu v 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; } 

Výkon:

 Enter Base: 5 Enter Power: 4 5 ^ 4 = 625 .......................... Process executed in 1.22 seconds Press any key to continue. 

Vysvetlenie:

Vo vyššie uvedenom príklade kódu v C by časová zložitosť bola exponent N, O(N) & O(N) priestorová zložitosť, vnútorný zásobník.