JZ12 數值的整數次方

2021-10-06 19:28:11 字數 1589 閱讀 3226

給定乙個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...