實現函式double power(double base, int exponent),求base的 exponent次方。
不得使用庫函式,同時不需要考慮大數問題。
注意:
樣例1
輸入:10 ,2
輸出:100
樣例2輸入:10 ,-2
輸出:0.01
主要是注意輸入的指數可能是負數。這時候需要先取正,算出結果,再對結果取倒數。
直接算是o(n),慢一點。
快速冪方法的時間複雜度是o(logn)。即,先算出底數的平方。然後每次計算冪的時候取exponent的一半即可。
class
solution
//每次只算二分之exponent的冪就行,base*base可以當做常數
result=
power
(base*base,exponent>>1)
;//因為exponent/2會取整,所以如果exponent是奇數,還要再乘一次base
if(exponent%2!=
0)return isnegative?
1/result:result;
}}
劍指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.效...