求冪的遞迴和非遞迴實現

2021-07-04 00:01:24 字數 550 閱讀 9561

遞迴版本的實現:

long long int  pow1(int x,unsigned int n)

if (n & 0x01)

else

return pow(x * x,n >> 1);

}

遞迴 的基準條件是:n==0  此時返回1(不呼叫自身)。若n是偶數,則x的n次方等於 x*x的n/2次方。若n是奇數,則x的n次方等於 x*x的n/2次方在乘以x。n/2可以用n右移一位來實現。

非遞迴版本的實現:

long long int  pow(int x,unsigned int n)

n *= n;

n = n >> 1;

} return ans;

}

把n用二進位制來表示,例如n=9,則二進位制為:1001,x的n次方就等於x乘以x的8次方,再比如,1111,則就是x乘以x的平方再乘x的四次方,再乘x的八次方。因此可以用乙個變數n(初始為x)來儲存x的冪次。然後開始迴圈,若n最右位為1,則結果乘以n,然後讓n平方,n右移。

使用遞迴和非遞迴實現求階乘

使用遞迴和非遞迴實現求階乘 程式設計思路 呼叫函式factorial 1 鍵入要計算的階乘書n 2 呼叫函式factorial 判斷n是否有效,若無效返回0,否則計算tmp tmp n n 直至n 0跳出while迴圈並返回tmp 3 列印結果。程式設計思路 呼叫函式factorial 1 鍵入要計...

快速冪(遞迴和非遞迴演算法)

快速冪 exponentiation by squaring,平方求冪 簡單而高效地計算方法,演算法的時間複雜度是o log n 例題 3的5次方如何計算呢?a的n次方 p 方法一 33333 243 進行四次連乘,複雜度為o n 1 適用於a,n都很小的情況。方法二 遞迴演算法 a的n 2次方a的...

遞迴之求冪

剛開始學習用遞迴實現x的n次方時,其思想 或者遞推式 一般如下 x n x x n 1 n 0 x n 1 n 0 c語言 如下 int64為有符號8位元組整數 int64 power int x,int n return x power x,n 1 這種簡單的求冪演算法的時間複雜度為o n 下面介...