Можно ли как-то совместить рекурсию и оператор 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-loop:
def infinity(start):
while True:
yield start
start += 1
Я просто хочу знать, можно ли это сделать рекурсивно.