給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
保證base和exponent不同時為0
# -*- coding:utf-8 -*-
class solution:
def power(self, base, exponent):
# write code here
ans = 1
e = exponent
if e<0:
e = -e
e -= 1
while(e>=0):
ans = ans*base
e -= 1
return ans if exponent>0 else 1/ans
如果exponent是偶數,那麼結果為
power(base, exponent/2)**2
如果exponent是奇數,那麼結果為
(power(base, exponent/2)**2)*base
再加上指數為負數的情況,**如下
# -*- coding:utf-8 -*-
class solution:
def power(self, base, exponent):
# write code here
# if exponent<0:
# base = 1/base
if exponent == 0:
return 1
if exponent == 1:
return base
if exponent<0:
base = 1/base
exponent = -exponent
if exponent%2 == 0:
ans = self.power(base, int(exponent/2))**2
return ans
else:
ans = (self.power(base, int(exponent/2))**2)*base
return ans
時間複雜度:o(logn),因為n的二進位制位個數為logn
空間複雜度:o(1)
# -*- coding:utf-8 -*-
class solution:
def power(self, base, exponent):
# write code here
if exponent<0:
base = 1/base
exponent = -exponent
ans = 1
while exponent>0:
# 判斷指數是否為奇數,如果是,則還需要乘上乙個base
if((exponent&1)==1):
ans *= base
exponent = exponent>>1 # 相當於除以2,並且是向下取整
base *= base
return ans
JZ12 數值的整數次方
知識點 快速冪 遞迴 題目鏈結 題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。保證base和exponent不同時為0 示例1 輸入 2,3 返回值 8.0000 解題思路 使用快速冪 x4 x2 x2可以用遞迴的方法進行運算...
JZ12 數值的整數次方
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。保證base和exponent不同時為0 沒什麼好講。就是模擬即可。不要被自己的測試所嚇倒了 出現後面一長串的000後面又出來乙個亂數字 這是由於浮點數型別,在計算的時候有特殊計算方法。具體...
12 數值的整數次方
題目 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 很自然的會想到用迭代。但是也可以用二分法來解決問題,時間複雜度為o logn 個人覺得,這個題目最難的是有很多邊界問題需要考慮。public class solution els...