"reverse-half pyramid of odd numbers"的 R 代码



已编辑我如何在R程序中生成一个函数来得到下面的结果?每一行输出都以一个或多个空格开头。

half_pyramid(1)
1
.
.
.

我真的过不去了。。

half_pyramid = function(n= scan()) {
for (k in (2*n):1) {
if (k %% 2 == 1) {
for (i in 1:k) {
for (j in (k-i):0) {
i = as.character(i)
cat(i)
}
cat("n")
}
}
}
}

使用递归比使用多重嵌套循环更有效

half_pyramid <- function(n, leading = 1) {
cat(paste0(c(rep(' ', leading), rep(2 * n - 1, n)), collapse = ''), 'n')
if(n != 1) half_pyramid(n - 1, leading + 1) 
}

测试:

half_pyramid(1)
#>  1
half_pyramid(3)
#>  555 
#>   33 
#>    1
half_pyramid(5)
#>  99999 
#>   7777 
#>    555 
#>     33 
#>      1

当n>5,因为11具有2个数字,因此在输出中占据了不成比例的水平空间。不管使用什么解决方案,情况都会是这样。

创建于2022-12-22,reprex v2.0.2

相关内容

最新更新