劍指Offer 12 數值的整數次方

2021-10-02 12:28:01 字數 1050 閱讀 8191

給定乙個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...