"""
需求:
實現 pow(x, n) ,即計算 x 的 n 次冪函數。
思路1:x**n
思路2:暴力迭代(運行超時)
思路3:超過最大深度
二分法+遞歸
pow(x, n) = pow(x, n/2)**2 or pow(x, (n-1)/2)*pow(x, (n+1)/2)
思路4:
分治思想+位運算
"""classSolution:defmyPow(self, x:float, n:int)->float:"""分治思想+位運算"""
res =1if n <0:# 處理n爲負數的情形
x, n =1/ x,-n
while n:if n &1:# 當前位置爲1,則說明有對應冪指數
res *= x
x *= x # 底數空轉
n >>=1# 右移一位return res
defmyPow1(self, x:float, n:int)->float:return x ** n
defmyPow2(self, x:float, n:int)->float:# 暴力迭代if n ==0:return1
res =1for i inrange(n if n >0else-n):
res *= x
return res if n >0else1/ res
defmyPow3(self, x:float, n:int)->float:"""遞歸,超過最大深度"""defpow(x, n):if n ==1:return x
elif n ==0:return1if n %2==0:
cur_v =pow(x, n /2)return cur_v * cur_v
else:returnpow(x,(n -1)/2)*pow(x,(n +1)/2)if n >=0:returnpow(x, n)else:return1/pow(x, n)