Saltar al contenido

Seguir las llamadas

Python · Unidad 11: Recursión

Cuando fact(3) llama a fact(2), no termina: se queda esperando la respuesta. Cada llamada tiene su propio n.

Las llamadas se apilan como platos: la última que entra es la primera que sale. Eso es la pila de llamadas.

def fact(n):
    print("entra", n)
    if n == 1:
        return 1
    r = n * fact(n - 1)
    print("sale", n)
    return r

fact(3)

Imprime

entra 3
entra 2
entra 1
sale 2
sale 3

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Opción múltiple

    Mientras fact(2) trabaja, ¿qué pasa con la llamada fact(3)?

  2. 2. Predice la salida

    Aquí el caso base es no hacer nada, porque con 0 no entra al if. ¿Qué imprime?

  3. 3. Predice la salida

    ¿Qué imprime este código?

  4. 4. Predice la salida

    Sigue qué regresa cada llamada. ¿Qué imprime?

  5. 5. Completa el código

    Completa el caso base para que imprima 8, que es 2 elevado a la 3.

  6. 6. Encuentra el bug

    Este programa debería imprimir 24, el factorial de 4. ¿Qué línea tiene el error?

  7. 7. Ordena las líneas

    Ordena para que dibuje una escalera que baja: #, ## y ###, en ese orden.

  8. 8. Opción múltiple

    Con cuenta(4), ¿cuántas veces se llama a cuenta en total, contando la primera?

  9. 9. Predice la salida

    ¿Qué imprime este código?

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →