Recursão usando yield
Existe alguma maneira de misturar recursão e oyield
declaração? Por exemplo, um gerador de número infinito (usando recursão) seria algo como:
def infinity(start):
yield start
# recursion here ...
>>> it = infinity(1)
>>> next(it)
1
>>> next(it)
2
Eu tentei
def infinity(start):
yield start
infinity(start + 1)
def infinity(start):
yield start
yield infinity(start + 1)
Mas nenhum deles fez o que eu quero, o primeiro parou depois que produziustart
e o segundo produziustart
, depois o gerador e depois paro
NOTA Por favor, eu sei que você pode fazer isso usando um loop while:
def infinity(start):
while True:
yield start
start += 1
Só quero saber se isso pode ser feito recursivament