Recursion 仅使用递归返回python中包含数字组合的列表
这个程序从列表中打印出不同的元素组合。我们的想法是要么选择元素,要么不选择。“打印(存储)”打印出正确的答案,但是,如果我试图列出这些答案,似乎有什么地方出了问题 从调试中我了解到,当当前函数调用中执行“store.append(lst[I])”时,“ans”在上一次调用中被更新。我不知道如何返回所有组合的列表Recursion 仅使用递归返回python中包含数字组合的列表,recursion,append,combinations,Recursion,Append,Combinations,这个程序从列表中打印出不同的元素组合。我们的想法是要么选择元素,要么不选择。“打印(存储)”打印出正确的答案,但是,如果我试图列出这些答案,似乎有什么地方出了问题 从调试中我了解到,当当前函数调用中执行“store.append(lst[I])”时,“ans”在上一次调用中被更新。我不知道如何返回所有组合的列表 ans = [] def comb(lst,i,store): if i ==len(lst): print(store) global ans
ans = []
def comb(lst,i,store):
if i ==len(lst):
print(store)
global ans
ans.append(store)
else:
comb(lst,i+1,store) # dont select element
store.append(lst[i])
comb(lst,i+1,store) # select the element
store.pop()
def driver(lst):
comb(lst,0,[])
return ans
print(driver([1,2,3]))
#OUTPUT:
[]
[3]
[2]
[2, 3]
[1]
[1, 3]
[1, 2]
[1, 2, 3]
# return ans output:
[[], [], [], [], [], [], [], []]
下面是我要做的:
def comb(lst,i=0,store=[]):
如果i==len(lst):
退货[商店]
x=梳(第一层,i+1,存储)
y=梳(lst,i+1,存储+lst[i]])
返回x+y
我不喜欢附加到全局ans
或弹出存储
。另外,尽可能不要使用突变