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 程式語言中實現檢查數字是否為迴文數的程式的方法。

更新於: 2022-12-15

451 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.