Python描绘了递归生成器调用/收益栈

时间:2019-05-16 15:12:10

标签: python recursion

我已经创建了下面的递归生成器,但是要完全理解调用和收益堆栈很困难。有人可以提供一些实际的信息吗?

[3]

我在最后一行设置了一个断点,无法跟踪每个步骤所发生的情况。我要递归产生[2]然后[1]然后<% if (tasks != undefined) { %> ... <% } %> 。这是一个更复杂问题的简化,因此,我不能像往常一样遍历整个列表。

1 个答案:

答案 0 :(得分:0)

从评论中看来,您正在寻找类似的东西:

lis = [1, 2, 3]
def parts(l=lis):
    yield l
    if len(l) != 1:
        yield from parts(l[1:])
    yield l

然后您将获得以下结果:

for i in parts():
    print(i)

我得到的结果是:

[1, 2, 3]
[2, 3]
[3]
[3]
[2, 3]
[1, 2, 3]