logo

Ontdek kracht zonder de POW-functie in C te gebruiken

De functie pow() wordt gebruikt om de macht van een bepaald geheel getal te berekenen. In dit artikel gaan we met behulp van een programma begrijpen hoe we de macht van een geheel getal kunnen berekenen zonder de functie pow() in C te gebruiken.

java tostring

For-lus gebruiken voor het bepalen van de kracht van een gegeven geheel getal

Stel je voor dat je een ^ b moet vinden. De eenvoudigste methode is om a met b keer te vermenigvuldigen met behulp van een lus.

  • Laat a ^ b de invoer zijn. Het grondtal is a, terwijl de exponent b is.
  • Begin met een macht van 1.
  • Voer de volgende instructies b keer uit met behulp van een lus
  • macht = macht * een
  • Het energiesysteem heeft de uiteindelijke oplossing: a ^ b.

Laten we de bovenstaande aanpak beter begrijpen met een voorbeeld van een programma in 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></=>

Uitleg

De bovenstaande code heeft een O (N) tijdscomplexiteit, waarbij N de exponent is. O is de ruimtecomplexiteit (1).

While-lus gebruiken:

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

Uitgang:

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

Uitleg

Long Long Int is twee keer zo groot als Long Int. De formaatspecificatie voor long long int is procent lld.

Recursie gebruiken om de kracht van een gegeven geheel getal te vinden

Neem aan dat a ^ b de invoer is. De kracht van 'a' zal bij elke recursieve oproep met één toenemen. Om a ^ b te verkrijgen, noemen we de recursieve functie b tweemaal.

  • Laat Pow ( a, b ) de recursieve functie zijn die wordt gebruikt om a ^ b te berekenen.
  • Geef eenvoudigweg 1 terug als b == 0; anders retourneer Pow (a, b -1) * a.

Laten we de bovenstaande aanpak beter begrijpen met een voorbeeld van een programma in 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; } 

Uitgang:

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

Uitleg:

In het bovenstaande voorbeeld van een code in C zou de tijdcomplexiteit de exponent N, O(N) en O(N) ruimtecomplexiteit, interne stapeling zijn.