python – 将具有两个递归调用的函数转换为交互式函数

我有一个函数有两个递归调用,我试图将其转换为迭代函数.我已经弄明白我可以通过一个电话很容易地做到这一点,但我无法弄清楚如何合并另一个电话.

功能:

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

我只是无法弄清楚如何添加第二个调用以获得正确的答案.谢谢!

最佳答案
如果您不介意更改算法的结构,可以从最低值开始以自下而上的方式计算值.

def specialMultiplication(max_n):
    a = b = 1
    for n in range(1, max_n+1):
        a, b = b, a*b*n
    return b

转载注明原文:python – 将具有两个递归调用的函数转换为交互式函数 - 代码日志