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