Haskell 程式反轉數字


本教程討論了在 Haskell 程式語言中編寫反轉數字的程式。

在本教程中,我們將看到兩種在 Haskell 中實現反轉數字程式的方法。

  • 使用列表函式 reverse 反轉數字的程式。
  • 使用遞迴函式反轉數字的程式。

示例 1

使用列表函式 reverse 反轉數字的程式。

-- function declaration 
reverseNumber :: Int->Int
-- function definition
reverseNumber n = k
   where
      temp = reverse (show n)
      k = read temp :: Int
main :: IO()
main = do
-- declaring and initializing a variable number
   let number = 123
-- invoking the function reverseNumber and printing the returned number
   print ("The reverse number for the number " ++ show number ++ " is:")
   print (reverseNumber number)

輸出

"The reverse number for the number 123 is:"
321

在上述程式中,我們聲明瞭一個名為 reverseNumber 的函式,它接收一個整數作為引數並返回一個整數。在函式定義中,我們接收一個引數 n。我們使用 show 函式將整數 n 解析為字串,並呼叫 show 函式返回值的 reverse 函式。並將結果載入到變數 temp 中。由於 Haskell 中的字串是字元列表。reverse 函式接收列表作為輸入並返回其反轉結果。我們使用 read 函式將字串 temp 解析為整數,並將其載入到變數 k 中,該變數由函式返回。即 reverseNumber 函式將整數轉換為字串,使用字串函式 reverse 反轉字串,將其重新轉換為數字,並返回該數字。

在主函式中,我們宣告並初始化了一個數字。最後,我們使用該數字作為引數呼叫 reverseNumber 函式並列印返回的輸出。

示例 2

使用遞迴函式反轉數字的程式。

-- function declaration
reverseNumber :: Int->Int->Int
-- function definition
-- base case
reverseNumber 0 revnum = revnum
reverseNumber num revnum = reverseNumber x y
   where
      k = mod num 10
      y = revnum * 10 + k
      x = div num 10                            
main :: IO()
main = do
-- declaring and initializing variable number
   let number = 123
-- invoking the function reverseNumber and printing the returned result
   print ("The reverse number for the number " ++ show number ++ " is:")
   print (reverseNumber number 0)

輸出

"The reverse number for the number 123 is:"
321

在上述程式中,我們聲明瞭一個名為 reverseNumber 的函式,它接收兩個整數作為引數並返回一個整數。在函式定義中,我們接收兩個整數引數 num 和 revnum。我們使用 mod 函式提取 num 中個位上的數字,並將其載入到變數 k 中。我們將引數 revnum 乘以 10 並加上數字 k,並將結果載入到變數 y 中。將引數 rev 除以 10 並將其載入到變數 x 中。最後,我們返回對 reverseNumber 函式的遞迴呼叫,引數為 x 和 y。遞迴呼叫會一直執行,直到函式達到基本情況,其中第一個引數為 0,函式返回第二個引數。在主函式中,我們宣告並初始化了一個數字。最後,我們使用該數字作為引數呼叫 reverseNumber 函式並列印返回的輸出。

結論

在本教程中,我們討論了兩種在 Haskell 程式語言中實現反轉數字程式的方法。

更新於: 2022-12-14

618 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.