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`函式。