小编Ric*_*ham的帖子

Python 3.2中的递归

我试图绕过递归并发布一个工作算法来生成给定列表的所有子集.

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循环的递归调用究竟是如何工作的?

python recursion list python-3.x

3
推荐指数
1
解决办法
629
查看次数

标签 统计

list ×1

python ×1

python-3.x ×1

recursion ×1