Есть ли способ смешать рекурсию и 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
Я просто хочу знать, можно ли это сделать рекурсивно.