"""
需求:
实现 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)