如何用for、if、while循环实现特定星号三角图案(R语言)
星号三角图案生成的R代码解决方案
需求说明
需要仅使用for、if和while循环生成特定星号三角图案:
- 当变量
h为1时,输出1行单个星号; - 当
h为2时,先输出h=1的图案,再输出2行的星号三角; - 当
h为5时,依次输出h=1到4的图案,最后输出h=5的5行星号三角。
错误代码及输出
错误代码
cat("enter an integer:") h <- scan(n=1) for(i in 1:h){ for(j in 1:h){ for(k in 1:h){ if(i >= k) cat("*") } cat("\n") } }
h=5时的错误输出
* * * * * ** ** ** ** ** *** *** *** *** *** **** **** **** **** **** ***** ***** ***** ***** *****
问题分析
原代码的第二层循环j in 1:h导致每个星号行重复了h次,比如i=1时连续输出5行单星,而非仅输出1次h=1的图案,完全不符合需求的累加式子图案输出逻辑。
正确代码
cat("enter an integer:") h <- scan(n = 1) # 遍历每个子图案的高度(从1到h) for (m in 1:h) { # 生成当前子图案的m行 for (row in 1:m) { # 每行输出row个星号 for (star in 1:row) { cat("*") } cat("\n") } }
效果验证(h=5时)
输出结果为:
* * ** * ** *** * ** *** **** * ** *** **** *****
内容的提问来源于stack exchange,提问作者user21535146
相关产品推荐
相关产品推荐

