我想构建一个递归函数,查找长度为 n>=k>=0 的给定列表的所有大小为“k”的子集,并返回这些子集的列表。
例如:如果输入列表是 [1,2,3,4] 并且 k = 2 那么函数将返回 [[4,3],[2,4],[2,3],[1,4], [1,3],[1,2]]
请注意,列表的不同排列被认为是同一个列表。
我认为这种递归应该有效:
return [lst[0]] + choose_sets(lst[1:],k-1) ¬¬and¬¬ choose_sets(lst[1:],k)
choose_sets(lst,k)
函数在哪里。
意义:
输入:[1,2,3,4],k=3
调用:
[1] + [2,3,4],k=2 和 [2,3,4],k=3
等等...
谁能指导我如何“同时”调用这两个递归调用?我的“退出期限”应该是什么?
谢谢。