Haskell 程序检查输入数字是否为回文数
本教程讨论编写一个程序,以检查输入数字在 Haskell 编程语言中是否为回文数。
当数字在反转数字后得到相同的数字时,可以将其称为回文数。例如,数字 12321 是一个回文数,因为在反转数字后它得到相同的数字。
在本教程中,我们将看到:
使用字符串反转函数检查输入数字是否为回文数的程序。
使用递归函数检查输入数字是否为回文数的程序。
方法 1:使用字符串反转函数检查回文数
算法步骤
我们声明了一个名为 isPalindrome 的函数,它接受一个整数作为参数并返回一个布尔值。
使用“Where”关键字在多个语句中表达逻辑
使用 show 函数将数字转换为字符串,并且
使用 reverse 函数反转字符串
比较两个字符串
根据比较得到的布尔表达式打印结果
示例
-- function declaration isPalindrome :: Int->Bool -- function definition isPalindrome n = (n == k) where -- Converting integer to string using function show nStr = reverse (show n) -- Converting string to an integer using function read k = (read nStr :: Int) main :: IO() main = do -- initializing variable num let num = 12321 -- invoking the function isPalindrome let status = isPalindrome num -- printing the status if(status==True) then print ("The number " ++ show num ++ " is a palindrome") else print ("The number " ++ show num ++ " is not a palindrome")
输出
"The number 12321 is a palindrome"
方法 2:使用字符串递归函数检查回文数
算法
我们声明了一个名为 isPalindrome 的函数,它接受三个整数参数并返回一个布尔值。
创建一个 main 函数并定义一个值来检查它是否为回文数。
在 main 函数中初始化 Palendrom 函数指向定义的数字。
根据 Palendrom 函数得到的布尔表达式打印结果。
示例
使用递归函数检查输入数字是否为回文数的程序
-- function declaration isPalindrome :: Int->Int->Int->Bool -- function definition isPalindrome num a revNum = if(a==0) then if (revNum == num) then True else False else k where d = mod a 10 newRevNum = revNum*10 + d newA = div a 10 k = isPalindrome num newA newRevNum main :: IO() main = do -- initializing variable num let num = 1256521 -- invoking the function isPalindrome let status = isPalindrome num num 0 -- printing the status if(status==True) then print ("The number " ++ show num ++ " is a palindrome") else print ("The number " ++ show num ++ " is not a palindrome")
输出
"The number 1256521 is a palindrome"
结论
在本教程中,我们讨论了两种在 Haskell 编程语言中实现检查数字是否为回文数的程序的方法。
广告