Funciones tail recursivas

Re: Funciones tail recursivas

de Marcos Viera - InCo -
Número de respuestas: 0
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