我已经创建了下面的递归生成器,但是要完全理解调用和收益堆栈很困难。有人可以提供一些实际的信息吗?
[3]
我在最后一行设置了一个断点,无法跟踪每个步骤所发生的情况。我要递归产生[2]
然后[1]
然后<% if (tasks != undefined) { %>
...
<% } %>
。这是一个更复杂问题的简化,因此,我不能像往常一样遍历整个列表。
答案 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]