Haskell 程序打印三角形形式的乘法表


本教程讨论了在 Haskell 编程语言中编写一个程序来打印三角形形式的乘法表。

例如,数字 10 的三角形格式的乘法表为

1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
10 20 30 40 50 60 70 80 90 100

算法步骤

  • 获取输入或初始化一个整数变量 n,用于打印乘法表。

  • 实现打印乘法表的程序逻辑。

示例

程序打印三角形形式的数字乘法表。

-- function declaration for tablehelper function
tablehelper :: Int->Int -> IO()

-- function definition for tablehelper function
tablehelper n i = if(i==n)
   then printTable n 1
   else do
      printTable i 1
      tablehelper n (i+1)
      
-- function declaration for printTable function
printTable :: Int->Int->IO()

-- function definition for printTable function
printTable n i = if (n==i)
   then putStrLn((show (n*i)) ++ " ")
   else do
      putStr ((show (n*i)) ++ " ")
      printTable n (i+1)
      
main :: IO()
main = do
-- initializing variable for n
   let n = 10
-- invoking the function tablehelper
   print ("The multiplication table for number " ++ show n ++ " in the triangular form is:")
   tablehelper n 1

输出

"The multiplication table for number 10 in the triangular form is:"
1 
2 4 
3 6 9 
4 8 12 16 
5 10 15 20 25 
6 12 18 24 30 36 
7 14 21 28 35 42 49 
8 16 24 32 40 48 56 64 
9 18 27 36 45 54 63 72 81 
10 20 30 40 50 60 70 80 90 100 

在上面的程序中,

我们声明了一个函数 tableHelper,它接受两个整数参数并返回一个 IO 操作。IO 操作是使用输入和显示控制台的操作。print 函数是一个 IO 操作,因为它在控制台上显示输出。

在函数 tableHelper 的函数定义中,接受了两个整数参数 n 和 a,其中 n 是要生成乘法表的数字,a 是用于迭代的变量。将 n 的值与 i 进行比较。如果 n 的值等于 i,则控制权转移到 then 块,这是一个基本情况,其中 printTable 函数被调用,参数为 n 和 1。

如果 n 的值不等于 i,则控制权转移到 else 块,其中函数 printTable 函数被调用,参数为 i 和 1。最后,该函数以参数 n 和 i+1 递归调用自身。当 i+1 等于 n 时,函数终止。

我们声明了另一个函数 printTable,它接受两个整数参数并返回一个 IO 操作。在其函数定义中,它接受两个整数 n 和 i。

该函数比较 n 和 i 的值,如果 n 等于 i,则控制权转移到 else 块,这是一个基本情况,其中该函数使用 putStrLn 函数打印 n 和 i 的乘积值。如果 n 不等于 i,则控制权转移到 else 块,其中使用 putStr 函数打印 n 和 i 的乘积值。并且该函数递归调用自身,参数为 n 和 (i+1),直到到达基本情况。

这两个递归函数充当嵌套循环。在主函数中,为 n 初始化一个变量。tableHelper 函数被调用,参数为 n 和 1,其中 n 是迭代的初始步骤。

注意 - show 函数接受数字作为参数,并返回数字的解析字符串。“++”是 Haskell 中用于连接字符串的操作符。

结论

在本教程中,我们讨论了在 Haskell 编程语言中实现一个程序来打印三角形形式的乘法表。

更新于: 2022-12-14

186 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告