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