擅长:python、mysql、java
<p>生成器(任何带有<code>yield</code>语句的函数)都是惰性的。这意味着<code>result()</code>在您从中请求第一个值之前不会开始处理,而您不会这样做。在</p>
<p>这里的根本原因是您首先从<code>x</code>请求一个值。这意味着生成器在至少请求第二个值之前永远不会询问它的子生成器。考虑一个更简单的例子:</p>
<pre><code>def test():
yield 1
a = test()
while True:
yield next(a)
a = test()
for i in range(10):
print(next(a))
</code></pre>
<p>这和你的一样有效。它有无限递归的潜力,但只有当你要求这么多的值时,它才会走得那么远。您所要做的就是删除<code>yield 1</code>以获得预期的行为。在您的代码中,只需切换<code>N</code>和<code>RZ</code>并请求下一个值-您将得到预期的递归。在</p>