You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言编写实现开头带空格的倒半奇数金字塔函数?

解决R语言倒半奇数金字塔输出问题

原代码的问题分析

  1. 循环逻辑混乱:内层嵌套循环没有区分前置空格和数字输出的逻辑,反而重复输出循环变量i,完全不符合需求。
  2. 错误修改循环变量:在循环内将i强制转换为字符型,破坏了整数循环的迭代逻辑,导致后续循环行为异常。
  3. 低效的外层循环:外层循环遍历从2n到1的所有整数,再筛选奇数,冗余且没必要。

修正后的代码

half_pyramid = function(n) {
  # 生成倒金字塔需要的奇数序列:从2n-1递减到1,步长为-2
  odd_rows = seq(from = 2 * n - 1, to = 1, by = -2)
  
  for (k in odd_rows) {
    # 计算每行开头的空格数:n减去当前行数字个数的一半(向下取整)
    space_num = n - (k - 1) %/% 2
    # 输出前置空格
    cat(strrep(" ", space_num))
    # 输出1到k的连续数字
    cat(paste(1:k, collapse = ""))
    # 换行
    cat("\n")
  }
}

代码说明

  • 奇数序列生成:直接用seq生成从2n-1到1的奇数,避免遍历无用的偶数。
  • 空格计算:通过n - (k - 1) %/% 2得到每行需要的前置空格数,确保倒金字塔的缩进效果(行数越靠后,空格越多)。
  • 输出逻辑:先用strrep快速生成指定数量的空格,再拼接并输出1到k的数字,最后换行完成一行的输出。

测试示例

  • 调用half_pyramid(1),输出:
    1
    
  • 调用half_pyramid(3),输出:
    12345
       123
        1
    

内容的提问来源于stack exchange,提问作者tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:01:20