迭代法
def quick_power(x, n):
res = 1
while n > 0:
# 如果幂为奇数, 把x记录下来,储存在res中
if n % 2 == 1:
res *= x
# 如果幂为偶数 则不记录,只是处理x, n
x *= x
n >>= 1
return res
递归法:
def quick_power(x, n):
# 特殊情况
if n == 0:
return 1
# 递归过程的最后一层
if n == 1:
return x
# 如果幂的值为偶数, 则 不 进行记录,传给下一层
if n % 2 == 0:
n >>= 1
return quick_power(x**2, n)
# 如果幂为奇数, 把x记录下来,与下面所有层的返回值 相乘 传给上一层
else:
n >>= 1
return x * quick_power(x**2, n)