Рекурсия с использованием yield

Можно ли как-то совместить рекурсию и оператор 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

Я просто хочу знать, можно ли это сделать рекурсивно.

59
задан juliomalegria 25 August 2013 в 17:03
поделиться