Haskell 程序计算所有偶数的和


本教程将帮助我们计算所有偶数的和。Haskell 使用函数式编程范式,这意味着它使用函数来转换数据,而不是使用循环和变量来跟踪状态变化。在 Haskell 中,计算 1 到 100 之间所有偶数的和有多种方法。

算法

  • 步骤 1 − 程序执行将从主函数开始。main() 函数控制整个程序。它写成 main = do。

  • 步骤 2 − 列表推导式 [x | x <- [1..100], x mod 2 == 0] 生成 1 到 100 之间所有偶数的列表。x <- [1..100] 部分定义了要迭代的数字范围,而 x mod 2 == 0 是筛选出偶数的谓词。内置函数 sum 接收此列表作为输入,并返回列表中所有数字的和。

  • 步骤 3 − print 函数用于将结果显示到控制台。

示例 1:使用列表推导式

在这种方法中,使用列表推导式生成 1 到 100(含)之间所有偶数的列表,然后使用 sum 函数计算这些数字的和。结果使用 print 打印到控制台。

main :: IO()
main = print (sum [x | x <- [1..100], x `mod` 2 == 0])

输出

2550

示例 2:使用 foldl 函数

在此示例中,二元函数为 (+) ,它接收当前累加器和列表的当前元素,并返回两者的和。初始累加器值为 0,值列表为 1 到 100 之间的偶数列表。foldl 函数从初始累加器值开始,将二元函数应用于它和列表的第一个元素,然后它接收结果并将函数应用于它和列表的第二个元素,依此类推,直到处理完整个列表。

main :: IO()
main = print (foldl (+) 0 [x | x <- [1..100], x `mod` 2 == 0])

输出

2550

示例 3:使用递归

此示例使用递归迭代 1 到 100 之间的数字列表并将偶数加在一起。sumEven 函数定义为一个递归函数,它接收一个整数列表作为输入并返回一个整数。

sumEven :: [Integer] -> Integer
sumEven [] = 0
sumEven (x:xs) = if even x then x + sumEven xs else sumEven xs
main :: IO()
main = print (sumEven [1..100])

输出

2550

结论

在 Haskell 中,计算 1 到 100 之间所有偶数的和(即 2550)有多种方法。在 Haskell 中,可以通过使用列表推导式、使用 foldl 函数或使用递归来计算 1 到 100 之间所有偶数的和。

更新于: 2023年1月19日

476 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告