fir*_*ver 3 python recursion python-3.x
我有一个函数有两个递归调用,我试图将其转换为迭代函数.我已经弄明白我可以通过一个电话很容易地做到这一点,但我无法弄清楚如何合并另一个电话.
功能:
def specialMultiplication(n):
if n < 2:
return 1
return n * specialMultiplication(n-1) * specialMultiplication(n-2)
Run Code Online (Sandbox Code Playgroud)
如果我只有其中一个,那将非常容易:
def specialMult(n, mult = 1):
while n > 1:
(n, mult) = (n-1, n * mult) # Or n-2 for the second one
return mult
Run Code Online (Sandbox Code Playgroud)
我只是无法弄清楚如何添加第二个调用以获得正确的答案.谢谢!
如果您不介意更改算法的结构,可以从最低值开始以自下而上的方式计算值.
def specialMultiplication(max_n):
a = b = 1
for n in range(1, max_n+1):
a, b = b, a*b*n
return b
Run Code Online (Sandbox Code Playgroud)