【发布时间】:2017-01-01 07:20:00
【问题描述】:
我有一个有两个递归调用的函数,我正在尝试将它转换为一个迭代函数。我已经弄清楚了我可以很容易地用一个电话在哪里做到这一点,但我不知道如何合并另一个电话。
功能:
def specialMultiplication(n):
if n < 2:
return 1
return n * specialMultiplication(n-1) * specialMultiplication(n-2)
如果我只有其中一个,那真的很容易:
def specialMult(n, mult = 1):
while n > 1:
(n, mult) = (n-1, n * mult) # Or n-2 for the second one
return mult
我只是不知道如何添加第二个电话以获得总体正确的答案。谢谢!
【问题讨论】:
-
您的算法的运行时间是指数级的。无论您是递归还是迭代地实现它,都只会将运行时间改变一个常数因子。
-
谢谢@merlin2011。我现在看到了。只是想弄清楚如何将其转换为动态样式。
-
Blckknght 的答案是应该在线性时间内运行的 DP 解决方案。
标签: python python-3.x recursion