【发布时间】:2020-12-02 15:08:36
【问题描述】:
有没有办法混合递归和yield 语句?例如,无限数生成器(使用递归)将类似于:
def infinity(start):
yield start
# recursion here ...
>>> it = infinity(1)
>>> next(it)
1
>>> next(it)
2
我试过了:
def infinity(start):
yield start
infinity(start + 1)
和
def infinity(start):
yield start
yield infinity(start + 1)
但他们都没有做我想做的事,第一个在产生start 后停止,第二个产生start,然后是生成器,然后停止。
注意:请,我知道您可以使用 while 循环来做到这一点:
def infinity(start):
while True:
yield start
start += 1
我只是想知道这是否可以递归完成。
【问题讨论】:
-
查看 [这里][1] 以获得我不久前提出的这个问题的一个很好的答案。 [1]:stackoverflow.com/questions/5704220/…
-
注意:正确的做法是使用
itertools.count,而不是推出自己的解决方案,基于循环或其他。 -
@PetrViktorin 这只是一个例子,生成无限数根本不是真正的问题
标签: python python-2.7 recursion yield