logo

Sužinokite galią nenaudodami POW funkcijos C

Funkcija pow() naudojama tam tikro sveikojo skaičiaus galiai apskaičiuoti. Dabar šiame straipsnyje su programos pagalba suprasime, kaip apskaičiuoti sveikojo skaičiaus galią nenaudojant funkcijos pow() C.

Ciklo for naudojimas duoto sveikojo skaičiaus galiai nustatyti

Įsivaizduokite, kad jums reikia rasti ^ b. Paprasčiausias būdas yra padauginti a iš b kartų naudojant kilpą.

  • Tegul a ^ b yra įvestis. Pagrindas yra a, o eksponentas yra b.
  • Pradėkite nuo 1 galios.
  • Naudodami kilpą, b kartus vykdykite šias instrukcijas
  • galia = galia * a
  • Energijos sistema turi galutinį sprendimą, a ^ b.

Geriau supraskime aukščiau pateiktą metodą su programos C pavyzdžiu:

char į eilutę
 # 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></=>

Paaiškinimas

Aukščiau pateiktas kodas turi O (N) laiko sudėtingumą, kur N yra eksponentas. O yra erdvės sudėtingumas (1).

Nors ciklo naudojimas:

 # 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; } 

Išvestis:

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

Paaiškinimas

kūrėjo režimo išjungimas

Long Long Int yra dvigubai didesnis nei Long Int. Formato specifikacija long long int yra procentai lld.

Rekursijos naudojimas norint rasti duoto sveikojo skaičiaus galią

Tarkime, kad a ^ b yra įvestis. „a“ galia padidės vienu su kiekvienu rekursiniu skambučiu. Norėdami gauti a ^ b, du kartus iškviečiame rekursinę funkciją b.

  • Tegu Pow ( a, b ) yra rekursinė funkcija, naudojama a ^ b apskaičiuoti.
  • Tiesiog grąžinkite 1, jei b == 0; kitu atveju grąžinkite Pow (a, b -1) * a.

Geriau supraskime aukščiau pateiktą metodą su programos C pavyzdžiu:

 # 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; } 

Išvestis:

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

Paaiškinimas:

Aukščiau pateiktame kodo C pavyzdyje laiko sudėtingumas būtų eksponentas N, O(N) ir O(N) erdvės sudėtingumas, vidinė krūva.