Funciones tail recursivas

Funciones tail recursivas

de Gustavo Chalela Nuñez -
Número de respuestas: 1

Buenas, a qué se refiere cuando hablamos de funciones tail recursivas? 

Yo tiendo a pensar que se aplica la recursión a la cola de la lista. Pero luego me surge la duda que en todas las funciones se aplica la recursión a la cola. Además, ¿Que pasa cuando la función tail recursiva es aplicada a un tipo algebraico? Ahí no hay cola de lista. 

Agradezco la respuesta!

Saludos!

En respuesta a Gustavo Chalela Nuñez

Re: Funciones tail recursivas

de Marcos Viera - InCo -
Hola,

Una función es tail-recursiva cuando la última acción que se hace es una llamada a sí misma y entonces al retorno de la recursión no hay nada más para hacer.
Por ejemplo, la siguiente función es tail recursiva:
sum acc [] = acc
sum acc (x:xs) = sum (acc+x) xs
dado que cuando hay recursión, lo último que se hace es la llamada recursiva.
Sin embargo la siguiente definición de sum no es tail recursiva:
sum [] = 0
sum (x:xs) = x + sum xs
dado que al retornar de la llamada recursiva (sum xs) hay que realizar la suma.

saludos