我可能没有使用正确的术语,但我对编程很新(如果这是一个简单的搜索,请原谅我,我不确定我是否使用了正确的关键字。)
假设我有一个递归关系:
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循环。
答案 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)