使用遞迴查詢數字階乘的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` 函式。

更新於:2023年3月27日

1K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始
廣告