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 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告