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 编程语言中实现检查数字是否为回文数的程序的方法。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP