Czy jest jakiś sposób na połączenie rekurencji i yield
instrukcji? Na przykład generator liczb nieskończonych (wykorzystujący rekurencję) wyglądałby tak:
def infinity(start):
yield start
# recursion here ...
>>> it = infinity(1)
>>> next(it)
1
>>> next(it)
2
Próbowałem:
def infinity(start):
yield start
infinity(start + 1)
i
def infinity(start):
yield start
yield infinity(start + 1)
Ale żaden z nich nie zrobił tego, co chciałem, pierwszy zatrzymał się po tym, jak ustąpił, start
a drugi ustąpił start
, potem generator i zatrzymał się.
UWAGA: Proszę, wiem, że możesz to zrobić za pomocą pętli while:
def infinity(start):
while True:
yield start
start += 1
Chcę tylko wiedzieć, czy można to zrobić rekurencyjnie.