遞迴 高效率求2的n次冪

2021-10-02 12:36:52 字數 792 閱讀 1678

思路:使用翻一番的技巧。

比如,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.使用陣列儲存。核心演算法是 我...