在生成器中使用递归时是否有一些特殊行为?
我可以通过以下代码打印 0,1,2,3,4:
def generator_recursion(n):
if n < 0:
return
else:
generator_recursion(n-1)
print(n)
generator_recursion(4)
但是当我像下面的代码更改为生成器时,它只打印 4。我不知道为什么。请帮助。
def generator_recursion(n):
if n < 0:
return
else:
generator_recursion(n-1)
yield n
gr = generator_recursion(4)
for k in gr:
print(k)
你需要
yield from
递归。
def generator_recursion(n):
if n < 0:
return
else:
yield from generator_recursion(n-1)
yield n
gr = generator_recursion(4)
for k in gr:
print(k)
这打印:
0
1
2
3
4