生成器中的递归

问题描述 投票:0回答:1

在生成器中使用递归时是否有一些特殊行为?

我可以通过以下代码打印 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)
python-3.x recursion generator
1个回答
0
投票

你需要

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

​
© www.soinside.com 2019 - 2024. All rights reserved.