我试图绕过递归并发布一个工作算法来生成给定列表的所有子集.
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
Run Code Online (Sandbox Code Playgroud)
假设我的列表是L = [0,1],正确的输出是[[],[0],[1],[0,1]]
使用print语句我已经缩小了genSubsets在进入for循环之前被调用了两次.我得到了很多.
但是为什么第一个for循环启动L的值只是[0]而第二个for循环使用[0,1]?包含for循环的递归调用究竟是如何工作的?