給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
保證base和exponent不同時為0
當指數exponent為正
當指數為負,可以先對指數取絕對值,算出次方的結果後取倒數,要討論底數是否為0
底數base不為0底數base為0,對0求倒數,導致程式出錯,需要進行特殊處理,這裡採用全域性變數
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ylzecmxv-1576820392924)(/home/xiaohu/.config/typora/typora-user-images/1572402654504.png)]
c++
法1:
class solution
unsigned int ab***ponent;
if(exponent<0)
ab***ponent=-exponent;
else
ab***ponent=exponent;
double result=powerwithunsignedexponent(base,ab***ponent);
if(exponent<0)
result=1.0/result;
return result;
}double powerwithunsignedexponent(double base,unsigned int exponent)
};
法2:
位運算效率比乘除法及求餘運算子(%)的效率高很多
class solution
unsigned int ab***ponent;
if(exponent<0)
ab***ponent=-exponent;
else
ab***ponent=exponent;
double result=powerwithunsignedexponent(base,ab***ponent);
if(exponent<0)
result=1.0/result;
return result;
}double powerwithunsignedexponent(double base,unsigned int exponent)
};
python
class
solution
:def
power
(self, base, exponent)
:# write code here
if exponent==0:
return
1 flag=
1if exponent<0:
exponent=
-exponent
flag=
0
temp=base
res=
1while
(exponent)
:if exponent &1:
res*=temp
temp*=temp
exponent=exponent>>
1if flag:
return res
else
:return
1.0/res
12 整數的整數次方
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。保證base和exponent不同時為0 快速求冪演算法 如 x 2 x x x 4 x 2 x 2 x 8 x 4 x 4 x 16 x 8 x 8 x 31 x 16 x 8 x 4 x...
12 數值的整數次方
題目 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 很自然的會想到用迭代。但是也可以用二分法來解決問題,時間複雜度為o logn 個人覺得,這個題目最難的是有很多邊界問題需要考慮。public class solution els...
12 數值的整數次方
數值的整數次方 給定乙個double型別的浮點數base和乙個int型別的整數exponent。求base的exponent次方 思路 全面考察底數是否為0,以及指數的正負等邊界情況 求a的n次方 一種效率高的求法 當n為偶數時,a n a n 2 a n 2 當n為基數時,a n a n 1 2 ...