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

JavaScript循环实现特定三角数字图案遇逻辑问题,求解决方案

解决JavaScript生成三角数字图案的问题

你的代码存在几个关键问题,导致无法得到预期输出:

  1. 填充符号使用了-,但预期是=
  2. 数字串的生成逻辑错误:当level递减时,你生成的是从1到level-1的重复数字,而实际上每一行应该从当前起始数字(如第二行从2开始)到maxNum-1的重复数字
  3. 填充长度的计算逻辑虽然方向对,但因为数字串本身错误,导致填充后的结果不符合预期

下面是修正后的代码,完全符合你的输出需求:

function nomor4(maxLevel) {
  const totalLength = maxLevel ** 2; // 总长度是maxLevel的平方,比如4²=16
  const result = [];

  for (let start = 1; start <= maxLevel; start++) {
    let left = '';
    // 生成左边数字串:从start到maxLevel-1,每个数字重复自身次数
    for (let num = start; num < maxLevel; num++) {
      left += String(num).repeat(num);
    }
    // 中间固定是maxLevel重复maxLevel次
    const middle = String(maxLevel).repeat(maxLevel);
    // 生成右边数字串:从maxLevel-1到start,每个数字重复自身次数
    let right = '';
    for (let num = maxLevel - 1; num >= start; num--) {
      right += String(num).repeat(num);
    }
    // 计算需要填充的=的数量,两边对称
    const fillCount = (totalLength - (left.length + middle.length + right.length)) / 2;
    const fill = '='.repeat(fillCount);
    // 拼接该行
    const line = fill + left + middle + right + fill;
    result.push(line);
  }

  return result.join('\n');
}

console.log(nomor4(4));

代码说明:

  • 先计算总长度:因为图案是对称的,总长度等于maxLevel的平方(比如4级时总长度16)
  • 循环每一行的起始数字start(从1到maxLevel):
    • 左边拼接从start到maxLevel-1的重复数字
    • 中间是固定的maxLevel重复自身次数
    • 右边拼接从maxLevel-1到start的重复数字
    • 计算需要填充的=数量,保证每行长度等于总长度,两边对称填充
  • 最后把所有行拼接成字符串返回

运行这段代码后,会输出你预期的图案:

1223334444333221
=22333444433322=
===3334444333===
======4444======

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:15:44