Is there some special behaviors when using recursion in generator?
I can print 0,1,2,3,4 by following code:
def generator_recursion(n):
if n < 0:
return
else:
generator_recursion(n-1)
print(n)
generator_recursion(4)
But when I change to generator like below code, It only print 4. I don't know why. please help.
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)
You need to yield from
the recursion.
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)
This prints:
0
1
2
3
4