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 之间所有偶数的和。
广告