劍指Offer 16 數值的整數次方

2021-09-07 04:01:36 字數 880 閱讀 8239

實現函式double power(double base, int exponent), 求base的exponent次方,不得使用庫函式。同時不需要考慮大數問題。

看到乘方,自然想到二分加速的方法。但是這個題關注的不是速度,而是考慮問題的全面性。比如幾個邊界情況,base=0,exp <=0 的時候。

時間複雜度:o(logn)

空間複雜度:o(1)

def

power

(base, exponent)

:"""

:param base: a

:param exponent: b

:return: a^b

"""flag =

1if base ==0:

return

0if exponent <0:

flag =

0 exponent =

- exponent

defbinary_pow

(base, exponent)

:if exponent ==1:

return base

if exponent ==0:

return

1 res = binary_pow(base, exponent >>1)

res *= res

if exponent &1:

res *= base

return res

res = binary_pow(base, exponent)

return res if flag else

1/ res

如果exp為小數?

做題之前需要多想,特別是邊界情況,保證準確性。

劍指offer16 數值的整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方,不得使用庫函式,同時不需要考慮大數問題。一 第一種方法大體分為以下四種情況 1 底數為0,則返回0 2 底數不為0,若指數為0,則返回1 3 底數不為0,若指數為正數,呼叫po...

劍指offer 16 數值的整數次方

保證base和exponent不同時為0 分析 注意考慮特殊情況,當底數為0,如果指數是正整數,則可以返回1,如果底數為0,指數是負整數,那麼就會出錯,而且如果底數不是0,指數是負整數,則返回的應該是底數和正整數運算結果的倒數。因此要考慮齊全。double powerwithunsignedexpo...

劍指offer16 數值的整數次方

思路方法一 暴力法 方法二 利用指數法則遞迴計算 分奇數和偶數 方法三 將n表示為二進位制來做 package jzoffer auther wwh date 2020 04 12 15 48 description public class mypow double ans 1 for int i...