有什麼方法可以將遞歸和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]:http://stackoverflow.com/questions/5704220/python-generator-vs-callback-function – sizzzzlerz
注:這樣做正確的方法是使用['itertools.count' ](http://docs.python.org/dev/library/itertools.html#itertools.count),而不是滾動您自己的解決方案,基於循環或othersise。 –
@PetrViktorin @PetrViktorin這只是一個例子,生成無限數字根本就不是真正的問題 – juliomalegria