时间复杂度 O(logn) 空间复杂度 O(1)
思路:
♥首先想到:递归 循环n次 但是时间复杂度为 O(n)
♥改进: 递归 折半递归 此时时间复杂度降为 O(logn)
ps: ① 递归的时间复杂度为进入递归的次数 ②折半递归时候分奇偶 ③注意n的正负
'''
思路:
♥、递归 循环n次 但是时间复杂度为 O(n)
♥ 递归 折半递归 此时时间复杂度降为 O(logn)
复杂度:
时间复杂度 O(logn) #解释:因为在每次递归种 每次都砍一半 2^x = n 则x=logn 空间复杂度 O(1)
'''
def myPow(x, n):
def cur(x, n):
if n == 0:
return 1
t = myPow(x, n // 2)
if n % 2 == 0:
return t * t
else:
return t * t * x
res = cur(x, abs(n))
if n >= 0:
return res
else:
return 1/res
print(myPow(2, -2))