給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
使用連乘的方法得到的時間複雜度 是 n.
這樣是找不到工作的。
需要對他就行優化。 就是
次冪 exponent 不是奇數就是偶數,
當它是偶數時,如求 10^10, 就是10^8*10^2 也就是10^ 1000 *10^0010
當它是奇數時,如求10^11,就是10^8 * 10^2 * 10^ 也就是
10^ 1000 *10^0010*10^0001
我們可以發現次冪可以用二進位制表示,像 二進位制8421(1111)每一位之間是就翻倍的關係,這樣前面求的冪乘以自己就相當於二進位制的左移一位。
(對於exponent)最後通過&1獲取當前位的狀態 ,>>獲取下一位的狀態.
當前狀態為1說明改為有效,乘到結果中
public double power(double base, int n) else if(n<0)else
while(exponent!=0)
return n>=0?res:(1/res);
}
數值的整次方
2 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題 如下 5 include6 using namespace std 7 8 bool g invaildinput false 9 10 ...
16 數值的整次方
實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。示例 1 輸入 2.00000,10 輸出 1024.00000 示例 2 輸入 2.10000,3 輸出 9.26100 示例 3 輸入 2...
16 數值的整次方
實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。示例 1 輸入 2.00000,10 輸出 1024.00000 示例 2 輸入 2.10000,3 輸出 9.26100 示例 3 輸入 2...