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 编程语言中实现一个程序来打印三角形形式的乘法表。