劍指offer 數值的整數次方

2021-08-31 23:51:27 字數 831 閱讀 1708

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

這道題不是很難。但是需要考慮的因素很多。

設最終結果為result

情況一:當為0次方時,

result=1;

情況二:當為正整數次方時,沒什麼問題。

result*=base;

情況三:當為負整數次方時,先對指數求絕對值,算出結果再取倒數。

注:因為要求倒數,考慮0求倒數的情況,會導致程式出錯。

(此時,有三種辦法解決。返回值、全域性變數和異常處理。)

public

class

solution

else

if(exponent >0)

}else

}return exponent >

0? result :

1.0/result;

}}

此題還應該考慮效率問題,在計算時,如求2

42^4

24時,可計算為22∗

22

2^2*2^2

22∗2

2。所以可以考慮運用公式遞迴來提高效率。

a n=

a^*a^ & n=偶數 \\ a^*a^ *a& n=奇數 \end

an={an

/2∗a

n/2a

(n−1

)/2∗

a(n−

1)/2

∗a​n

=偶數n

=奇數​

再進一步優化,計算n/2時,用n>>1來替代。具體**省略。

劍指offer 數值的整數次方

1 題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。2 思路 需要考慮到的情況 1 指數為負數的時候,可以先對指數求絕對值,算出次方之後的結果再取倒數。2 當底數是0,指數是負數的時候,可以將無效變數設定為true,並返回0。3...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。將指數大於0,小於0,等於0 底數不為0 的情況分開。其實指數為0的情況不必單獨拎出來 不進入if直接返回result為1.0 真正需要考慮的是,底數為0而指數為負的情況,數學上沒有意義。書...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1.最直觀的方法,遞迴求解a b a a b 1 當然也可以用迴圈實現。要注意特殊情況,指數為0時乘方結果都是1 指數為負數時的計算,可以先轉化為正數再求倒數,但是底數為0時不能求導。2.效...