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

JavaScript嵌套循环打印逐行递增数字三角形问题求解

JavaScript嵌套循环打印数字三角形问题修复

需求说明

实现逻辑:接收用户输入的数字,基于输入值生成对应数字三角形,以输入数字5为例,预期输出效果如下:

5
6 6
7 7 7
8 8 8 8
9 9 9 9 9
10 10 10 10 10

规则要求:

  • 每一行打印的数值相较上一行递增1
  • 每行的数字个数与当前行号相等
    现有问题:代码运行后所有行都重复打印初始输入的数字,无法实现数值逐行递增的效果。

原有问题代码

let num = prompt("Enter a number");

//Check if its a number
num = parseInt(num);

//loop 1
for (i = 1; i <= 6; i++) {

  //loop 2
  for (y = 0; y < i; y++) {
    document.write(num);
  }

  document.write(num = num +1; "<br>");
}
<p id="num"> </p>

错误原因

  • document.write(num = num +1; "<br>")存在语法错误,函数参数内不能用分号直接分隔多条独立语句,这行代码运行时会直接抛出语法错误,导致num自增逻辑完全不执行,所有内层循环读取到的始终是用户最初输入的数值
  • 内层循环打印数字时没有追加间隔空格,同行多个数字会直接连在一起,无法区分单个数字
  • 循环变量i、y未做变量声明,会默认成为全局变量,容易和其他脚本逻辑产生冲突

修正后代码

let num = prompt("Enter a number");
num = parseInt(num);
// 补充输入合法性校验
if (isNaN(num)) {
  document.write("请输入有效数字");
} else {
  // 外层循环控制行数,总共输出6行
  for (let i = 1; i <= 6; i++) {
    // 内层循环控制当前行打印的数字个数,个数等于当前行号i
    for (let y = 0; y < i; y++) {
      // 打印数字后追加空格,避免数字粘连
      document.write(num + " ");
    }
    // 打印完当前行所有数字后追加换行
    document.write("<br>");
    // 当前行打印完成后再给num自增,供下一行使用
    num = num + 1;
  }
}
<p id="num"> </p>

效果验证

输入数字5时,运行代码即可输出和预期完全一致的数字三角形:第一行1个5,第二行2个6,逐行递增到第六行6个10。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:09:18