給定乙個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
∗an
=偶數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.效...