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 程式語言中實現一個程式來列印三角形形式的乘法表。