如何在Python中返回每个递归函数调用?

时间:2017-09-04 00:13:56

标签: python recursion

我可能没有使用正确的术语,但我对编程很新(如果这是一个简单的搜索,请原谅我,我不确定我是否使用了正确的关键字。)

假设我有一个递归关系:

f(0)= 2

f(x)= f(x-1)+ 1,对于x> = 1。

现在,假设我想在Python(2.7)中使用递归来编程这种关系,但是我想返回一个列表:[f(x),f(x-1),而不是返回f(x)。 ,...,f(0)]。

我可以轻松地将递归关系编程为返回f(10):

def my_fun(x):
    if x == 0:
        return 2
    else:
        return 1+my_fun(x-1)

然而,我不知道如何在不使用for循环的情况下返回每个函数调用。

有办法做到这一点吗?

编辑:如果可能的话,我想避免使用for循环。

1 个答案:

答案 0 :(得分:1)

您可以返回list并使用最后一个元素来计算上一次调用中的值。

def my_fun(x):
    if x == 0:
        return [2]
    else:
        l = my_fun(x-1)
        l.append(l[-1] + 1) # since f(n-1) is in the last element

        return l

a = my_fun(5)

print(a)