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

如何使用While循环正确打印左下向递减星形三角形?

修正While循环实现左下向递减星形三角形

修正后的代码

let star = "* ";
let totalRows = 5;
let currentRow = 0;

while (currentRow < totalRows) {
  // 打印每行的前置空格
  let spaceCount = 0;
  while (spaceCount < currentRow * 2) {
    process.stdout.write(" ");
    spaceCount++;
  }
  // 打印当前行的星星
  let starCount = 0;
  while (starCount < totalRows - currentRow) {
    process.stdout.write(star);
    starCount++;
  }
  // 换行
  console.log();
  currentRow++;
}

原代码问题分析

  1. 未重置高度变量:原代码中height仅初始化一次,第一次外层循环后height被减至0,后续内层循环因height > length不成立,无法再打印多个星星。
  2. 缺少前置空格逻辑:没有处理每行的缩进,无法实现三角形的偏移效果。
  3. 多余星星输出:最后console.log(star)会额外打印一个星星,导致第一行输出异常。

修正说明

  • 用totalRows明确总行数,避免魔法数字,提升代码可读性。
  • 外层循环控制当前行数,每行先打印currentRow * 2个空格实现缩进,再打印totalRows - currentRow个星星保证每行星星数递减。
  • 每次外层循环独立处理空格和星星的计数,避免变量污染导致的逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:09:39