¿Hay alguna forma de mezclar la recursividad y la yield
declaración? Por ejemplo, un generador de números infinitos (usando recursividad) sería algo como:
def infinity(start):
yield start
# recursion here ...
>>> it = infinity(1)
>>> next(it)
1
>>> next(it)
2
Lo intenté:
def infinity(start):
yield start
infinity(start + 1)
y
def infinity(start):
yield start
yield infinity(start + 1)
Pero ninguno de ellos hizo lo que yo quería, el primero se detuvo después de que cedió start
y el segundo cedió start
, luego el generador y luego se detuvo.
NOTA: Por favor, sé que puede hacer esto usando un bucle while:
def infinity(start):
while True:
yield start
start += 1
Solo quiero saber si esto se puede hacer de forma recursiva.