有没有办法将递归和 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
我只想知道这是否可以递归地完成。
itertools.count
而不是自己编写解决方案,无论是基于循环还是其他方式。 - Petr Viktorin