在cmath標頭檔案中存在函式pow,在stl_numeric.h中存在對於power的具體實現
只看一下對於power的具體實現,之前不知道有沒有聽說過快速冪,power可以說就是快速冪的實現
函式原型如下:
template inline t power(t x, integer n)
template struct multiplies : public binary_function
};
發現power中預設實現x^n操作,那麼具體實現如下:
template t power(t x, integer n, monoidoperation op)
t result = x; //這裡result儲存乙個x,n可以理解為變回奇數
n >>= 1; //縮小2倍,繼續指向下面的操作
while (n != 0)
return result; //最終結果result
}}
感覺這樣的實現相對於之前的一直在寫的快速冪,邏輯性更好一些,並且這裡支援泛型以及仿函式操作操作,可以不使用預設的乘法仿函式,改用自己定義的仿函式! 實現power函式
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 考慮要全面 底數和指數都是0,無意義。其中相等不能用 指數大於0,迭代乘 小余0 實現 package com.mytest.mymain public class mypower00...
C 重寫power函式 遞迴與迴圈
重寫power 函式,返回乙個double型的正整數的任意次冪。另外要處理0的任意次冪都為0,任何數的任意次冪都為1 函式應報告0 的 0 次冪未定義,並將該值返回1 分別使用迴圈和遞迴實現。利用迴圈程式如下 include double power int n,int x int main dou...
stl numeric中的power演算法剖析
在power演算法中求乙個數x的n次方分成兩部分,一是當n為偶數時計算方法,另一部分是當n為奇數時的計算方法。在n的 分解 過程中,還可能還會出現偶數和奇數部分的 都參與計算。n為偶數,計算方式 假設 y x x z n 2 那麼xn y z。例如如下步驟 28 4 4。1 44 16 2。2 16...