Función de recursión en Python
Considera esta recursión básica en Python:
def fibonacci(number):
if number == 0: return 0
elif number == 1:
return 1
else:
return fibonacci(number-1) + fibonacci(number-2)
Lo que tiene sentido de acuerdo con la función (n-1) + (n-2) de la serie Fibonacci.
¿Cómo ejecuta Python la recursión que contiene otra recursión no dentro de la misma línea de código? ¿El 'finobacci (número-1)' completa toda la recursión hasta que alcanza el '1' y luego hace lo mismo con 'fibonacci (número-2)' y los agrega?
A modo de comparación, la siguiente función recursiva para elevar un número 'x' al poder 'y', puedo entender la recursión, sin duda llamándose hasta y == 0, ya que solo hay una llamada recursiva en una sola línea. Aún así, ¿no deberían ser todos los resultados '1' ya que el último comando ejecutado es 'return 1' cuando y == 0, por lo tanto, no se devuelve x?
def power(x, y):
if y == 0:
return 1
else:
return x*power(x, y-1)