Saltar al contenido
uencoder

Tail Recursion

La recursión de cola es aquella cuya llamada recursiva es la última operación de la función; los compiladores pueden optimizarla en un bucle para evitar el desbordamiento de pila.

Propósito

Expresar lógica de bucle con recursión sin hacer crecer la pila, un pilar de los lenguajes funcionales.

Mecanismo

Si la llamada recursiva está en posición de cola (la última operación antes de retornar), la TCO la convierte en un salto en lugar de una llamada, reutilizando el marco de pila. Requiere soporte del lenguaje (obligatorio en Scheme/SML; opcional en el modo estricto de JS según la especificación, pero solo Safari/JavaScriptCore lo implementa). La recursión no terminal debe reescribirse con un acumulador.

Casos de uso

  • Programación funcional
  • Evitar el desbordamiento de pila
  • Optimización de la recursión

Términos relacionados

References