Haskell程式:判斷一個數是偶數還是奇數


在Haskell中,我們可以使用`isEven`,`isOdd`和`mod`函式來檢查給定數字是偶數還是奇數。在第一個例子中,我們將使用`(isEven 0 = True and isEven n = isOdd (n - 1))`和`(isOdd 0 = False and isOdd n = isEven (n - 1))`函式。在第二個例子中,我們將使用`(isEven n = n `mod` 2 == 0)`函式。

方法一:使用`isEven`和`isOdd`函式檢查數字是偶數還是奇數

在這種方法中,`isEven`和`isOdd`函式被定義為相互遞迴函式。如果輸入數字為零,`isEven`函式返回`True`,否則返回`isOdd (n - 1)`的結果。如果輸入數字為零,`isOdd`函式返回`False`,否則返回`isEven (n - 1)`的結果。

演算法

  • 步驟1 − 定義`isEven`函式為:

isEven 0 = True
isEven n = isOdd (n - 1).
  • 步驟2 − 定義`isOdd`函式為:

isOdd 0 = False
isOdd n = isEven (n - 1).
  • 步驟3 − 程式執行將從`main`函式開始。`main()`函式控制整個程式。它寫成`main = do`。在`main`函式中,定義了一個值為5的變數`n`,並檢查`isEven n`的結果。如果結果為`True`,則將訊息“偶數”列印到控制檯。如果結果為`False`,則將訊息“奇數”列印到控制檯。

  • 步驟4 − 初始化名為“n”的變數。它將儲存要檢查的數字(是偶數還是奇數)。

  • 步驟5 − 函式呼叫後,使用`putStrLn`將結果列印到控制檯。

示例1

在這個例子中,我們定義了`isEven`和`isOdd`函式來檢查數字是奇數還是偶數。

isEven :: Integer -> Bool
isEven 0 = True
isEven n = isOdd (n - 1)

isOdd :: Integer -> Bool
isOdd 0 = False
isOdd n = isEven (n - 1)

main :: IO ()
main = do
   let n = 5
   if isEven n
      then putStrLn "Even"
      else putStrLn "Odd"

輸出

Odd

方法二:使用`mod`函式檢查數字是偶數還是奇數

在這種方法中,如果`n mod 2`的結果等於0,則`isEven`函式簡單地返回`True`,這意味著該數字可以被2整除,因此是偶數。如果結果不等於0,則該函式返回`False`,這意味著該數字不能被2整除,因此是奇數。

演算法

  • 步驟1 − 使用`mod`函式定義`isEven`函式為:

isEven n = n `mod` 2 == 0.
  • 步驟2 − 程式執行將從`main`函式開始。`main()`函式控制整個程式。它寫成`main = do`。在`main`函式中,使用`n`作為引數呼叫`isEven`函式,並檢查結果,就像在之前的實現中一樣。如果結果為`True`,則將訊息“偶數”列印到控制檯。如果結果為`False`,則將訊息“奇數”列印到控制檯。

  • 步驟3 − 初始化名為“n”的變數。它將儲存要檢查的數字(是偶數還是奇數)。

  • 步驟4 − 函式呼叫後,使用`putStrLn`將結果列印到控制檯。

示例1

在這個例子中,我們使用`mod`函式定義了`isEven`函式來檢查數字是奇數還是偶數。

isEven :: Integer -> Bool
isEven n = n `mod` 2 == 0

main :: IO ()
main = do
   let n = 5
   if isEven n
      then putStrLn "Even"
      else putStrLn "Odd"

輸出

Odd

示例2

在這個例子中,`isEven`函式使用模式匹配來確定數字是偶數還是奇數。如果`n mod 2`的結果等於0,則該函式返回字串“偶數”。如果結果不等於0,則該函式返回字串“奇數”。

isEven :: Integer -> String
isEven n
   | n `mod` 2 == 0 = "Even"
   | otherwise      = "Odd"

main :: IO ()
main = do
   let n = 5
   putStrLn (isEven n)

輸出

Odd

結論

在Haskell中,我們可以使用模運算子(`mod`)來確定一個數是偶數還是奇數。模運算子返回一個數除以另一個數的餘數。如果數字`n`與2進行模運算的結果等於0,則數字`n`是偶數。如果結果不等於0,則數字`n`是奇數。我們也可以使用內建的`isEven`和`isOdd`函式。

更新於:2023年3月27日

2K+ 閱讀量

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告