在generator中使用递归时是否有一些特殊的行为?
我可以通过以下代码打印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)
2条答案
按热度按时间vatpfxk51#
你需要
yield from
递归。这将打印:
ee7vknir2#
你必须从递归子进程
yield
-因为
generator_recursion
是从递归调用中正确地yield
ing出来的,所以现在您将看到正确的输出-正如您所了解的,这正是
yield from …
所实现的-