logo

C'de POW İşlevini Kullanmadan Gücü Öğrenin

Pow() fonksiyonu belirli bir tamsayının kuvvetini hesaplamak için kullanılır. Şimdi bu makalede, bir program yardımıyla C'de pow() fonksiyonunu kullanmadan bir tamsayının üssünün nasıl hesaplanacağını anlayacağız.

Verilen Tam Sayının Gücünü Belirlemek İçin for Döngüsünün Kullanılması

Bir ^ b'yi bulmanız gerektiğini düşünün. En kolay yöntem, bir döngü kullanarak a'yı b ile çarpmaktır.

  • Giriş a ^ b olsun. Taban a, üs ise b'dir.
  • 1'in kuvvetiyle başlayın.
  • Bir döngü kullanarak aşağıdaki talimatları b kez yürütün
  • güç = güç * a
  • Güç sisteminin nihai çözümü a ^ b'dir.

Yukarıdaki yaklaşımı C dilindeki bir program örneğiyle daha iyi anlayalım:

 # 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></=>

Açıklama

Yukarıdaki kod, N'nin üs olduğu bir O(N) zaman karmaşıklığına sahiptir. O uzay karmaşıklığıdır (1).

While döngüsünü kullanma:

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

Çıktı:

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

Açıklama

Long Long Int, Long Int'in iki katı kadar büyüktür. Long long int'nin format belirleyicisi yüzde lld'dir.

Verilen Tam Sayının Kuvvetini Bulmak için Özyinelemeyi Kullanma

a ^ b'nin girdi olduğunu varsayalım. Her özyinelemeli çağrıda 'a'nın gücü bir oranında artacaktır. a ^ b'yi elde etmek için özyinelemeli b fonksiyonunu iki kez çağırırız.

  • Pow ( a, b ), a ^ b'yi hesaplamak için kullanılan özyinelemeli fonksiyon olsun.
  • b == 0 ise basitçe 1 değerini döndürün; aksi halde Pow (a, b -1) * a değerini döndürün.

Yukarıdaki yaklaşımı C dilindeki bir program örneğiyle daha iyi anlayalım:

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

Çıktı:

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

Açıklama:

Yukarıdaki C kodu örneğinde, zaman karmaşıklığı üs N, O(N) & O(N) uzay karmaşıklığı, dahili yığın olacaktır.