【发布时间】:2012-11-24 03:10:37
【问题描述】:
我正试图围绕递归展开我的头脑,并发布了一个工作算法来生成给定列表的所有子集。
def genSubsets(L):
res = []
if len(L) == 0:
return [[]]
smaller = genSubsets(L[:-1])
extra = L[-1:]
new = []
for i in smaller:
new.append(i+extra)
return smaller + new
假设我的列表是 L = [0,1],正确的输出是 [[],[0],[1],[0,1]]
使用打印语句,我缩小了在进入 for 循环之前两次调用 genSubsets 的范围。我得到了这么多。
但是为什么第一个 for 循环初始化 L 的值只是 [0] 而第二个 for 循环使用 [0,1]?包含 for 循环的递归调用究竟是如何工作的?
【问题讨论】:
-
您可以使用this 来查找代码流。
-
感谢西比!太棒了!
标签: python list recursion python-3.x