已编辑我如何在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