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