在power演算法中求乙個數x的n次方分成兩部分,一是當n為偶數時計算方法,另一部分是當n為奇數時的計算方法。在n的"分解"過程中,還可能還會出現偶數和奇數部分的**都參與計算。
n為偶數,計算方式:
假設 y = x*x , z = n / 2;
那麼xn = y
z。例如如下步驟:
28 = 4
4。 (1)
44 = 16
2。 (2)
162 = 256
1。(3) // 此時n == 1,即結果最終轉換成了乙個數的奇次方。
while ((n & 1) == 0)
n為奇數,計算方式:
公式:xn = xn-1 * x。既然n此時為奇數,那麼n-1就為偶數了。例如如下步驟:
27 =2
6 * 2。
(1)26 * 2 = 4
3* 2。
(2)43* 2 = (4
2 * 4) * 2 = 4
2 * (4 * 2) = 4
2 * 8。 (3)
42 * 8 = 16
1 * 8。
(4)t result = x; // 步驟(1)被隱含執行了
n >>= 1;
while (n != 0)
n為較特殊的偶數情況:
如當x為2,n為14時。執行偶數如下
214 = 4
7。執行上面操作後,變為x是4,n是7的計算方式,也就是我們可以認為值的計算已被轉換成了n為奇數情形的計算方式了。
最後注意對stl中的這演算法不必侷限於純數**算--注意泛型中所提到的connect。
STL中對Pow函式的實現
在 stl原始碼剖析 中看到了pow函式在stl中的實現,感覺程式寫的非常巧妙。列出原始碼 template inline t identity element plus template inline t identity element multiplies template inline t ...
python中pow函式用法及功能說明
冪運算是高更數學的應用學科,是一種關於冪的數 算。同底數冪相乘,底數不變,指數相加。同底數冪相除,底數不變,指數相減。冪的乘方,底數不變,指數程式設計客棧相乘。適用於精確計算領域。計算機作為精確計算的一種方式,含有大量的冪運算。在python中就有內建函式pow函式表示冪的運算。1 pow 函式 p...
C語言中pow函式的使用
標頭檔案 include 1.函式原型 pow 函式用來求 x 的 y 次冪 次方 x y及函式值都是double型 其原型為 double pow double x,double y 2.使用 pow 用來計算以x 為底的 y 次方值,然後將結果返回。設返回值為 ret,則 ret xy。3.注意...