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 之間所有偶數的和。
廣告