递归超过一个值,但沿途存储列表

时间:2012-04-24 02:41:49

标签: python list recursion

我的问题是我的功能如下:

def myfunc(a):
    b=[]
    b.append(a)
    return myfunc(a-1), b*

* =我知道这会破坏我的功能 是否有任何可能的方法允许b在我的功能继续运行的同时使用我使用过的a值进行更新?问题所涉及的代码是最大值。 proble。所以我有一个权重和值列表,以及最大值。允许的重量。我的函数发现最大没有问题,但我想看看我用它到达那里的值。即w = [1,2,3] v = [4,7,2] 最大权重= 3,最大值是= 11.我希望我的功能在版本中显示的是列表,例如使用的权重= [1,2]和使用的值= [4,7]。很抱歉由于缺少实际发布的代码,该网站不允许这样做。

2 个答案:

答案 0 :(得分:2)

我建议使用默认参数。

def myfunc(a, lst=None):
    if lst is None:
        lst = []
    lst.append(a)
    if a > 0:
        myfunc(a-1, lst)
    return lst

print(myfunc(5))  # prints: [5, 4, 3, 2, 1, 0]

答案 1 :(得分:0)

你的意思是,这样的事情?

def myfunc(a):
    if a == 0:
        return [a]
    return myfunc(a-1) + [a]

myfunc(5)

> [0, 1, 2, 3, 4, 5]