logo

Znajdź moc bez użycia funkcji POW w C

Funkcja pow() służy do obliczania potęgi danej liczby całkowitej. Teraz w tym artykule zrozumiemy za pomocą programu, jak obliczyć potęgę liczby całkowitej bez użycia funkcji pow() w C.

Użycie pętli for do wyznaczania potęgi podanej liczby całkowitej

Wyobraź sobie, że musisz zlokalizować ^ b. Najłatwiejszą metodą jest pomnożenie a przez b razy za pomocą pętli.

  • Niech a ^ b będzie wejściem. Podstawą jest a, a wykładnikiem jest b.
  • Zacznij od potęgi 1.
  • Korzystając z pętli, wykonaj b razy poniższe instrukcje
  • moc = moc * a
  • System zasilania ma ostateczne rozwiązanie, a ^ b.

Zrozummy lepiej powyższe podejście na przykładzie programu w 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></=>

Wyjaśnienie

Powyższy kod ma złożoność czasową O (N), gdzie N jest wykładnikiem. O jest złożonością przestrzenną (1).

Korzystanie z pętli 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; } 

Wyjście:

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

Wyjaśnienie

Long Long Int jest dwukrotnie większy niż Long Int. Specyfikatorem formatu long long int jest procent lld.

Użycie rekurencji do znalezienia potęgi danej liczby całkowitej

Załóżmy, że a ^ b jest wejściem. Potęga „a” będzie wzrastać o jeden przy każdym wywołaniu rekurencyjnym. Aby otrzymać a ^ b, wywołujemy funkcję rekurencyjną b dwukrotnie.

  • Niech Pow ( a, b ) będzie funkcją rekurencyjną używaną do obliczenia a ^ b.
  • Po prostu zwróć 1, jeśli b == 0; w przeciwnym razie zwróć Pow (a, b -1) * a.

Zrozummy lepiej powyższe podejście na przykładzie programu w 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; } 

Wyjście:

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

Wyjaśnienie:

W powyższym przykładzie kodu w C złożoność czasowa będzie wykładnikiem N, złożonością przestrzeni O(N) i O(N), stosem wewnętrznym.