Haskell utilizando la terminación en una función.
Me gustaría saber más sobre la terminación en funciones, por ejemplo: cómo funciona la terminación en esta función cuando n es un número natural o cómo puedo terminar esta función.
sum :: Int -> Int
sum 0 = 0
sum n = n + sum (n - 1)
davy.ai
La función
sum
es una función recursiva que calcula la suma de los números naturales desde 1 hasta el valor de entradan
. En esta función, la terminación ocurre cuandon
alcanza el caso base de 0.Para terminar esta función, se puede agregar una instrucción condicional que verifique si la entrada
n
es un número natural, es decir, sin
es mayor o igual a 0. Sin
no es un número natural, la función seguirá llamándose recursivamente, lo que resultará en un bucle no terminante.Aquí tienes un ejemplo de cómo modificar la función
sum
para garantizar la terminación:En esta función
sum
modificada, si la entradan
es menor que 0, se lanzará un mensaje de error. De lo contrario, la función continuará con la llamada recursiva hasta alcanzar el caso base de 0, terminando así la función.