如何同时限制2个函数的递归调用次数? - Python

时间:2018-03-03 16:50:21

标签: python recursion

def f1(t):
    if t < 0:
        return 0
    result = 0
    result = 1.5 * f2(t-1) + 3.5 * f1(t-1)
    return result

def f2(t):
    if t < 0:
        return 1
    result = 0
    result = 1.5 * f1(t-1) + 3.5 * f2(t-1)
    return result

for i in range(10):
    result = 0
    result = f1(i) + f2(i)
    print(result)

运行上面的代码需要花费很多时间。我想将f1()和f2()的执行次数限制为for-loop 中每次迭代的10次执行,然后继续执行下一个for-loop值。怎么做?

修改:1。original pseudo code for this part 2。actual functions

1 个答案:

答案 0 :(得分:0)

您可以使用关键字参数传递递归深度。

def f1(t, _max_depth=10):

    if _max_depth > 0:
        if t < 0:
            return 0
        result = 0
        result = 1.5 * f2(t-1, _max_depth=_max_depth - 1) + 3.5 * f1(t-1, _max_depth=_max_depth - 1)
        return result

    else:
        # return some default value here

您可以对f2执行相同操作。