使用循环创建指定星号图案的R代码问题求助
解决星号直角三角形图案的R代码问题
你的代码逻辑本身是正确的,问题出在输入函数scan(n=1)的使用上。在R控制台中,scan需要输入值后额外按下结束输入的快捷键(Unix/Linux按Ctrl+D,Windows按Ctrl+Z),否则程序会一直等待输入,导致你误以为代码仅支持h=1的场景。
修正后的代码(使用for+if)
将输入方式换成更友好的readline,就能正常获取h的值并生成对应图案:
h <- as.integer(readline(prompt="enter an integer:")) for(i in 1:h){ for(j in 1:h){ if(i >= j){ cat("*") } } cat("\n") }
更高效的写法(仍符合循环+判断要求)
内层循环可以直接限定为1:i,减少不必要的循环次数,同时保留逻辑清晰性:
h <- as.integer(readline(prompt="enter an integer:")) for(i in 1:h){ for(j in 1:i){ cat("*") } cat("\n") }
使用while循环实现的版本
如果需要用while循环完成需求,代码如下:
h <- as.integer(readline(prompt="enter an integer:")) i <- 1 while(i <= h){ j <- 1 while(j <= h){ if(i >= j){ cat("*") } j <- j + 1 } cat("\n") i <- i + 1 }
运行上述代码后,输入h=2会输出:
**
输入h=5会输出:
**
内容的提问来源于stack exchange,提问作者user21563562
相关产品推荐
相关产品推荐

