Funkcija pow() koristi se za izračunavanje snage zadanog cijelog broja. Sada ćemo u ovom članku uz pomoć programa razumjeti kako izračunati snagu cijelog broja bez korištenja funkcije pow() u C-u.
Korištenje for petlje za određivanje snage zadanog cijelog broja
Zamislite da trebate locirati a ^ b. Najlakši način je pomnožiti a s b puta pomoću petlje.
abeceda s brojevima
- Neka je a ^ b ulaz. Baza je a, dok je eksponent b.
- Počnite s potencijom 1.
- Koristeći petlju, izvršite sljedeće upute b puta
- snaga = snaga * a
- Elektroenergetski sustav ima konačno rješenje, a ^ b.
Razumimo gornji pristup bolje s primjerom programa u C-u:
# 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 ( ' enter the number and its exponential : n n ' ) ; scanf ( ' % d % d ' , & n , & exp ) ; exp1 = exp ; // storing original value for future use // same as while ( ( - - exp ) ! = - 1 ) while ( exp - - > 0 ) { value * = n ; // multiply n to itself exp times } printf ( ' n n % d ^ % d = % l l d n n ' , 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 'a' 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'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 ( ' enter Base : ' ) ; scanf ( ' % d ' , & base ) ; printf ( ' enter Power : ' ) ; scanf ( ' % d ' , & exponent ) ; printf ( ' % d ^ % d = % d ' , 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) & O(N) space complexity, internal stack.</p> <hr></=>
Obrazloženje
Gornji kod ima O (N) vremensku složenost, gdje je N eksponent. O je složenost prostora (1).
Korištenje while petlje:
# include # include # include # include # include int main ( ) { int n , exp , exp1 ; long long int value = 1 ; printf ( ' enter the number and its exponential : n n ' ) ; scanf ( ' % d % d ' , & n , & exp ) ; exp1 = exp ; // storing original value for future use // same as while ( ( - - exp ) ! = - 1 ) while ( exp - - > 0 ) { value * = n ; // multiply n to itself exp times } printf ( ' n n % d ^ % d = % l l d n n ' , n , exp1 , value ) ; return 0; }
Izlaz:
css podebljani tekst
enter the number and its exponential : 5 4 5 ^ 6 = 625 .......................... Process executed in 0.11 seconds Press any key to continue.
Obrazloženje
Long Long Int dvostruko je veći od Long Int. Specifikator formata za long long int je postotak lld.
Korištenje rekurzije za pronalaženje snage zadanog cijelog broja
Pretpostavimo da je a ^ b ulaz. Snaga 'a' će se povećati za jedan sa svakim rekurzivnim pozivom. Da bismo dobili a ^ b, pozivamo rekurzivnu funkciju b dva puta.
- Neka je Pow ( a, b ) rekurzivna funkcija koja se koristi za izračunavanje a ^ b.
- Jednostavno vratite 1 ako je b == 0; inače, vrati Pow (a, b -1) * a.
Razumimo gornji pristup bolje s primjerom programa u C-u:
# 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 ( ' enter Base : ' ) ; scanf ( ' % d ' , & base ) ; printf ( ' enter Power : ' ) ; scanf ( ' % d ' , & exponent ) ; printf ( ' % d ^ % d = % d ' , base , exponent , Pow ( base , exponent ) ) ; return 0; }
Izlaz:
java verzija linuxa
Enter Base: 5 Enter Power: 4 5 ^ 4 = 625 .......................... Process executed in 1.22 seconds Press any key to continue.
Obrazloženje:
U gornjem primjeru koda u C-u, vremenska složenost bila bi eksponent N, O(N) & O(N) prostorna složenost, interni stog.
=>