欢迎访问宙启技术站
智能推送

使用Haskell实现一个递归函数,计算一个列表中所有元素的和。

发布时间:2023-12-10 01:12:52

下面是一个使用Haskell编写的递归函数,用于计算一个列表中所有元素的和:

sumList :: [Int] -> Int
sumList [] = 0
sumList (x:xs) = x + sumList xs

这个函数接受一个整数列表作为输入,并返回列表中所有元素的和。它使用模式匹配来处理两种情况:

1. 当输入列表为空时,即 [],函数直接返回0,表示和为0。

2. 当输入列表不为空时,即 (x:xs),其中 x 是列表的头部元素,xs 是剩余的尾部列表。函数递归调用自身,将剩余的列表作为参数传递给它,并将头部元素 x 加到递归调用的结果中。

使用例子如下:

main :: IO ()
main = do
  let list = [1, 2, 3, 4, 5]
  putStrLn $ "Input list: " ++ show list
  putStrLn $ "Sum of list: " ++ show (sumList list)

这个例子创建了一个整数列表 [1, 2, 3, 4, 5],并调用 sumList 函数来计算该列表的和。结果将打印输出。

运行上述代码,输出如下:

Input list: [1,2,3,4,5]
Sum of list: 15

这证明了递归函数 sumList 能够正确地计算列表中所有元素的和。