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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告