思路:使用翻一番的技巧。
比如,2的9次 則 1 * 2 = 2;2 * 2 = 4;4 * 4 =16;16 * 16=。。。;
指數:1-----------2-----------4------------8---------------
能翻倍的情況下
//能翻
while
((ex<<1)
不能翻倍的情況下
不能翻:則把差值作為指數遞迴計算。
當差值為0時,就說明到頭了,只剩最後乙個數字。 return 1 。乘數字本身即可。
return res*
pow(a, n-ex)
;
static int pow
(int a,int n)
int res = a;
int ex =1;
//判斷能不能翻倍
while
((ex<<1)
//不能翻:則把差值作為指數遞迴計算。
// 當差值為0時,就說明到頭了,只剩最後乙個數字。 return 1 。乘數字本身即可。
return res*
pow(a, n-ex);}
public
static
void
main
(string[
] args)
十九 高效率的冪運算
我們想要處理乙個整數的冪 long intpow long int x,unsigned int n 計算x n,可以使用n 1次乘法自乘,用遞迴演算法最好。如果n是偶數則x n x n 2 x n 2 如果n是奇數,則x的n次冪 x n 1 2 x n 1 2 x 例如,為了計算x 62,演算法將...
求x的N次冪
典型的減小時間複雜度的做法是記住程式已經做的事情,避免在做重複的事情,比如使用n 1個迴圈乘法就是一直在做重複的乘x。通過記住x,x2,x4,等資料,可以大大減小時間的複雜度。程式如下 包含標頭檔案 include include using namespace std double pow int...
計算2的n次冪
在計算2的n次冪的時候,我們可以採用pow這個函式,但是當資料太大的時候顯然int double 等這些資料型別並不能儲存下來,就會出現問題,這個時候可以採取陣列儲存的方式。1.使用pow函式。pow x,y 為計算x的y次冪。如 pow 2,3 為計算2的3次冪。2.使用陣列儲存。核心演算法是 我...