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
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
结论
在Haskell中,我们可以使用模运算符(`mod`)来确定一个数是偶数还是奇数。模运算符返回一个数除以另一个数的余数。如果数字`n`与2进行模运算的结果等于0,则数字`n`是偶数。如果结果不等于0,则数字`n`是奇数。我们也可以使用内置的`isEven`和`isOdd`函数。