es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)
Tags:  , ,

Answer

  1. Avatar for 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 entrada n. En esta función, la terminación ocurre cuando n 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, si n es mayor o igual a 0. Si n 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:

    sum :: Int -> Int
    sum n 
      | n < 0 = error "La entrada debe ser un número natural"
      | n == 0 = 0
      | otherwise = n + sum (n - 1)
    

    En esta función sum modificada, si la entrada n 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.

Comments are closed.