Haskell程式列印左三角星形圖案


在Haskell中,列印左三角星形圖案將使用`mapM_`函式,`replicate`函式和遞迴。在第一個示例中,我們將使用在`main`函式下定義的`(mapM_ putStrLn [replicate i '*' | i <- [1..n]])`函式,在第二個示例中,我們將使用使用者自定義函式`(printLeftTriangle n = mapM_ putStrLn [replicate i '*' | i <- [1..n]])`。在第三個示例中,我們將使用遞迴函式`(leftTriangle n = if n > 0 then leftTriangle (n-1) >> putStrLn (replicate n '*') else return ())`。

方法一:在`main`函式下使用`mapM_`函式列印左三角星形圖案

在這種方法中,我們首先將三角形的行數定義為n(在本例中,n = 5)。然後,我們使用列表推導式生成一個字串列表,其中每個字串都是三角形的一行。每一行都是使用`replicate i '*'`生成的,它建立一個包含i個星號的字串。最後,我們使用`mapM_ putStrLn`在單獨的行上列印三角形的每一行。

演算法

  • 步驟1 - 程式執行將從`main`函式開始。`main()`函式控制整個程式。它寫成`main = do`。

  • 步驟2 - 命名為“n”的變數被初始化,它將儲存要列印左星形圖案的行數。

  • 步驟3 - `mapM_`函式與`replicate`函式一起使用來列印生成的左星形圖案,例如`mapM_ putStrLn [replicate i '*' | i <- [1..n]]`。

示例

在這個例子中,左三角星形圖案是使用在`main`函式下定義的`mapM_`函式列印的。

main :: IO ()
main = do
  let n = 5
  mapM_ putStrLn [replicate i '*' | i <- [1..n]]

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
*
**
***
****
*****

方法二:使用使用者定義函式中定義的`mapM_`函式列印左三角星形圖案

在這種方法中,`printLeftTriangle`函式接收一個整數n作為輸入,並列印大小為n的左三角星形圖案。`mapM_`函式用於將`putStrLn`函式應用於列表推導式生成的星號列表中的每個字串。`replicate`函式用於生成i個星號的字串,其中i的範圍從1到n。列表推導式生成一個長度遞增的字串列表,然後使用`putStrLn`在單獨的行上列印這些字串。

演算法

  • 步驟1 - 使用者定義的`printLeftTriangle`函式與`replicate`函式一起使用來列印生成的左星形圖案,例如`printLeftTriangle n = mapM_ putStrLn [replicate i '*' | i <- [1..n]]`。

  • 步驟2 - 程式執行將從`main`函式開始。`main()`函式控制整個程式。它寫成`main = do`。

  • 步驟3 - 命名為“n”的變數被初始化,它將儲存要列印左星形圖案的行數。

  • 步驟4 - 函式被呼叫後,生成的左三角星形圖案將被列印到控制檯。

示例

在這個例子中,左三角星形圖案是使用在使用者定義函式中定義的`mapM_`和`replicate`函式列印的。

printLeftTriangle :: Int -> IO ()
printLeftTriangle n = mapM_ putStrLn [replicate i '*' | i <- [1..n]]

main :: IO ()
main = do
  let n = 5
  printLeftTriangle n

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
*
**
***
****
*****

方法三:使用遞迴列印左三角星形圖案

在這種方法中,函式接收一個整數n作為輸入,並遞迴地列印n行,每行都有n個星號。當n小於或等於0時,遞迴停止,`return ()`語句結束遞迴。

演算法

  • 步驟1 - 使用遞迴定義使用者定義的`leftTriangle`函式,例如`leftTriangle n = if n > 0 then leftTriangle (n-1) >> putStrLn (replicate n '*') else return ()`。

  • 步驟2 - 程式執行將從`main`函式開始。`main()`函式控制整個程式。它寫成`main = do`。

  • 步驟3 - 命名為“n”的變數被初始化,它將儲存要列印左星形圖案的行數。

  • 步驟4 - 函式被呼叫後,生成的左三角星形圖案將被列印到控制檯。

示例

在這個例子中,左三角星形圖案是使用遞迴列印的。

leftTriangle :: Int -> IO ()
leftTriangle n = if n > 0 then leftTriangle (n-1) >> putStrLn (replicate n '*') else return ()

main :: IO ()
main = do
  let n = 5
  leftTriangle n

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
*
**
***
****
*****

結論

左三角星形圖案是由星號(*)排列成三角形形狀的圖案,左側是最長的一側。在Haskell中,我們可以使用`mapM_`,`replicate`函式和遞迴來實現它。

更新於:2023年3月28日

240 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告