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`函式和遞迴來實現它。