使用yield进行递归
- 论坛
- 使用yield进行递归
13 浏览
使用yield进行递归
有没有办法将递归和yield
语句结合起来?例如,一个使用递归的无限数生成器可以是这样的:
def infinity(start): yield start # 递归在这里... >>> 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
我只是想知道是否可以通过递归来实现这个。