Saltar al contenido

Cuándo no usarla

JavaScript · Unidad 11: Recursión

Cada llamada que espera ocupa un lugar en la pila, y la pila tiene límite. Si una función se llama sin parar, la pila se llena y JavaScript truena con un RangeError.

Su mensaje, en inglés, dice "Maximum call stack size exceeded": se pasó del tamaño máximo de la pila.

function sinFin(n) {
  return sinFin(n + 1);
}
try {
  sinFin(1);
} catch (error) {
  console.log(error.name);
}

Imprime

RangeError

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. Predice la salida

    ¿Qué imprime este código?

  2. 2. Opción múltiple

    ¿Qué pasa con cuenta(5)?

  3. 3. Encuentra el bug

    Este programa debería imprimir 8 (2 × 2 × 2). ¿Qué línea tiene el error?

  4. 4. Opción múltiple

    sumaHasta(100000) truena, pero sumaHasta sí tiene caso base. ¿Por qué truena?

  5. 5. Completa el código

    Completa el factorial con un ciclo para que imprima 120.

  6. 6. Predice la salida

    Así se voltea un texto con un ciclo. ¿Qué imprime?

  7. 7. Ordena las líneas

    Ordena potencia con un ciclo, sin recursión, para que potencia(2, 3) dé 8.

  8. 8. Encuentra el caso que falla

    sumaHasta(n) debería sumar de 1 a n, o dar 0 si n es 0 o negativo. ¿Con qué llamada falla?

  9. 9. Opción múltiple

    ¿En cuál de estos casos conviene más la recursión que un ciclo?

  10. 10. Predice la salida

    En la serie de Fibonacci, cada número es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8… Esta función cuenta sus propias llamadas. ¿Qué imprime?

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 →