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`函数和递归来实现它。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP