【发布时间】:2014-08-29 21:21:38
【问题描述】:
我需要编写一个递归函数,在 Python 中计算列表中长度“n”的所有可能组合,而无需导入 itertools 等任何内容。
所以我到目前为止是:
if n == 0:
return [[]]
elif lst == []:
return []
else:
rest = subsets(lst[1:], n-1)
for next in lst: # Loop through something?
return lst[0] + rest #Add something?
我似乎对递归调用的工作原理缺乏了解,有人可以向我解释一下吗?
【问题讨论】:
-
您能帮我们解决一下缩进问题吗?点击帖子下方的“编辑”按钮。
-
抱歉,现在应该更清楚了
-
你的函数叫
subsets吗?如果是这样,您可以在其中包含函数标题吗? -
一个我问过自己很多次的问题。也许开始获取列表长度以下的“n”个数字的所有组合(包括零),然后按索引获取元素。
-
另外:如果您只想要独特的输出,了解组合的顺序是否重要很重要。 [a, b] 和 [b, a] 都算吗?还是只是[a,b]?假设列表是 [a, b, c] 并且您想要 2-len 子集。 [a, a] 是有效的输出吗?
标签: python recursion combinations