12 整數的整數次方

2021-10-02 06:53:20 字數 738 閱讀 4075

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

保證base和exponent不同時為0

快速求冪演算法

如:x ^ 2 = x * x

x ^ 4 = (x ^ 2) * (x ^ 2)

x ^ 8 = (x ^ 4) * (x ^ 4)

x ^ 16 = (x ^ 8) * (x ^ 8)

x ^ 31 = (x ^ 16) * (x ^ 8) * (x ^ 4) * (x ^ 2) * x

寫出指數的二進位制表達,例如13表達為二進位制1101。

舉例:10^1101 = 10^0001*10^0100*10^1000。

通過&1和》1來逐位讀取1101,為1時將該位代表的乘數累乘到最終結果。

當n為偶數,a^n =(a^n/2)*(a^n/2)

當n為奇數,a^n = a^[(n-1)/2] * a^[(n-1)/2] * a

function

power

(base, exponent)

else

if(exponent <0)

else

while

(n)return exponent >

0? res :

1/ res;

}

12 數值的整數次方

題目 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 很自然的會想到用迭代。但是也可以用二分法來解決問題,時間複雜度為o logn 個人覺得,這個題目最難的是有很多邊界問題需要考慮。public class solution els...

12 數值的整數次方

數值的整數次方 給定乙個double型別的浮點數base和乙個int型別的整數exponent。求base的exponent次方 思路 全面考察底數是否為0,以及指數的正負等邊界情況 求a的n次方 一種效率高的求法 當n為偶數時,a n a n 2 a n 2 當n為基數時,a n a n 1 2 ...

12 數值的整數次方

給定乙個 double 型別的浮點數 base 和 int 型別的整數 exponent,求 base 的 exponent 次方。下面的討論中 x 代表 base,n 代表 exponent。因為 x x n 2 可以通過遞迴求解,並且每次遞迴 n 都減小一半,因此整個演算法的時間複雜度為 o l...