使用遞迴查詢數字階乘的Haskell程式
在 Haskell 中,我們使用遞迴以及 `foldl` 和 `product` 函式來查詢數字的階乘。在第一個示例中,我們將使用遞迴以及基例和遞迴情況;在第二個示例中,我們將使用 `factorial n = foldl (*) 1 [1..n]` 函式;在第三個示例中,我們將使用 `factorial n = product [1..n]` 函式。
演算法
步驟 1 − 定義使用者自定義的遞迴階乘函式,
對於示例 1 & 2 −
factorial 0 = 1 factorial n = n * factorial (n-1).
對於示例 3 −
factorial n = foldl (*) 1 [1..n].
對於示例 4 −
factorial n = product [1..n].
步驟 2 − 程式執行將從主函式開始。`main()` 函式控制整個程式。它被寫成 `main = do`。在主函式中,我們透過傳遞數字 5 來測試階乘函式,它應該輸出 120 (5*4*3*2*1)。
步驟 3 − 初始化名為“num”的變數。它將儲存要計算階乘的數字。
步驟 4 − 呼叫函式後,使用 `print` 函式將結果階乘列印到控制檯。
示例 1
在這個示例中,我們將看到如何使用遞迴查詢數字的階乘。這可以透過使用使用者自定義的遞迴函式來完成。
factorial :: Integer -> Integer factorial 0 = 1 factorial n = n * factorial (n-1) main :: IO () main = do let num = 5 print (factorial num)
輸出
120
示例 2
在這個示例中,我們將看到如何使用遞迴情況查詢數字的階乘。`factorial'` 函式以整數作為輸入,並返回該數字的階乘。該函式使用基例:如果輸入為 0,則返回 1。否則,它將自身呼叫,輸入減 1,並將結果乘以原始輸入。然後,主函式將值 5 賦值給變數 num,並使用 num 作為引數呼叫 `factorial'` 函式並列印結果。
factorial' :: Integer -> Integer factorial' n | n == 0 = 1 | otherwise = n * factorial' (n-1) main :: IO () main = do let num = 5 print (factorial' num)
輸出
120
示例 3
在這個示例中,我們將看到如何使用遞迴查詢數字的階乘。這可以透過使用 `foldl` 函式來完成。
factorial :: Integer -> Integer factorial n = foldl (*) 1 [1..n] main :: IO () main = do let num = 5 print (factorial num)
輸出
120
示例 4
在這個示例中,我們將看到如何使用遞迴查詢數字的階乘。這可以透過使用 `product` 函式來完成。
factorial :: Integer -> Integer factorial n = product [1..n] main :: IO () main = do let num = 5 print (factorial num)
輸出
120
結論
在 Haskell 中,要使用遞迴查詢數字的階乘,我們可以使用使用者自定義函式或 `foldl` 和 `product` 函式。