給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
保證base和exponent不同時為0
偷雞,但是達不到題目預想的樣子
快速冪方法:快速冪
public
class
solution
int ab***ponent = exponent <0?
-exponent : exponent;
double res =1;
double t = base;
//若base 為0 exponent 不為0,算出來的為 0.0
while
(ab***ponent !=0)
t *= t;
ab***ponent >>=1;
}return exponent <0?
1.0/ res : res;
}}
正常我們求24次方,需要24次乘法。但是當我們知道12次方的時候,可以直接對12次方乘以自身得到24,按照這樣思路,24 -> 12 -> 6 -> 3 -> 1。只需5次乘法即可。
* 遞迴的形式求快速冪
* @param base
* @param exponent
* @return
*/public
static
double
recursivepow
(double base,
int exponent)
if(exponent ==1)
double res =
recursivepow
(base, exponent >>1)
;//這裡可以看遞迴公式,即可明白if(
(exponent &1)
==1)return res;
}
劍指Offer (12)數值的整數次方
題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。實現如下 方法一 迴圈 此題不需要考慮計算後值溢位的情況,即不存在大數情況 異常情況 底數為0時 0.0 指數為0時 1.0 數學定義 指數為負數時,需要考慮先計算指數絕對值的結果...
劍指offer 12 數值的整數次方
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1 對數字的預處理,比如,0的負數次方等 2 提高計算n的m次方的效率方法一 遞迴。利用公式 ab b 2 0 ab 2 ab 2 a b 1 2 a b 1 2 aclass soluti...
劍指Offer 12 數值的整數次方
description給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。用divide conquer的思路可以每次平方,最後堆起來得到答案。最開始的時候我搞不太清exp 0,1這種情況怎麼合併,所以就單獨分了出來。c double pow...