【发布时间】:2018-07-28 00:32:48
【问题描述】:
我正在尝试使用运行时间为 log(n) 的尾递归来计算 num 的幂。据我了解,使用 power // 2 而不是 power - 1 的区别在于减少运行时间。因此,当我计算值时,我需要将旧值乘以另外两个总和而不是一个。我的代码可以找到直到达到 power_of(2,6)
def power_of(num,power,value = 1):
if power == 0:
return 1
elif power == 1:
return value
elif power % 2 != 0:
return power_of(num, power // 2 , value * num * num * num)
else:
return power_of(num, power // 2 , value * num * num)
power_of(2,6)
【问题讨论】:
-
你的代码全错了。检查 power_of(2,1)。
标签: python recursion data-structures tail-recursion