劍指Offer 數值的整數次方 Python

2021-09-11 20:41:26 字數 1367 閱讀 1965

題目描述:

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

思路:

考慮邊界值,底數若為0的時候,特殊處理。

用位運算代替乘除法,優化了效率

實現:

class

solution

:def

power

(self, base, exponent)

:# write code here

boolinvalidinput =

false

if base ==

0.0and exponent <0:

boolinvalidinput =

true

return

0.0 ab***ponent =

abs(exponent)

result =

0.0 result = self.powerwithunsignedexponent(base, ab***ponent)

if exponent <0:

return

1/result

else

:return result

# 基礎乘除

defpowerwithunsignedexponent

(self, base, ab***ponent)

: result =

1.0for i in

range

(ab***ponent)

: result *= base

return result

右移運算子代替了除以2,位於運算子代替了求餘運算子(%)

實現:

def

powerwithunsignedexponent

(self, base, exponent)

:if exponent ==0:

return

1if exponent ==1:

return base

result = self.powerwithunsignedexponent(base, exponent>>1)

result *= result

if(exponent &

0x1==1)

: result *= base

return 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.效...