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

2024-04-27 00:50:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

假设我有一个递归关系:

f(0)=2

f(x)=f(x-1)+1表示x>;=1。在

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

我可以很容易地将递归关系编程为返回f(10):

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

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

有办法吗?在

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


Tags: gt列表forreturnif关系mydef
1条回答
网友
1楼 · 发布于 2024-04-27 00:50:12

您可以返回一个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)

相关问题 更多 >