Чи є спосіб змішати рекурсію та 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
Я просто хочу знати, чи можна це робити рекурсивно.