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

FizzBuzz函数逻辑异常:输出顺序与结果不符求助

问题排查与修正

核心逻辑错误点

  • 循环范围偏差:当前循环for (let i = 0; i < n; i++)仅遍历0到n-1(比如n=7时是0-6),但预期输出包含7,需调整循环条件为i <= n以覆盖到目标数值。
  • 条件判断逻辑混乱:
    1. 多个独立if语句会让符合多条件的数值被多次推入数组(比如i=0时,会依次push"Fizz"、"Buzz"、"FizzBuzz"),但每个数值应仅对应数组中的一个元素。
    2. 同时是3和5倍数的判断优先级错误,未放在最前面,导致无法触发"FizzBuzz"的输出逻辑。
  • 分支绑定错误:当前else仅与最后一个“同时是3和5倍数”的if绑定,导致只要不是15的倍数,都会执行push(i),哪怕已经推入了Fizz或Buzz,造成重复添加。

修正后的代码

function fizzbuzz(n) {
  let arr = [];
  
  // 按预期输出遍历0到n(包含n)
  for (let i = 0; i <= n; i++) {
    let item = i; // 默认值为当前数字
    
    if (i % 3 === 0 && i % 5 === 0) {
      item = "FizzBuzz";
    } else if (i % 3 === 0) {
      item = "Fizz";
    } else if (i % 5 === 0) {
      item = "Buzz";
    }
    
    arr.push(item);
  }
  
  return arr;
}

验证结果

调用fizzbuzz(7)时,输出为:

[0, 1, 2, "Fizz", 4, "Buzz", "Fizz", 7]

完全符合预期。

额外说明

如果实际需求是生成1到n的序列(而非0到n),只需将循环起始值改为1,结束条件保持i <= n,此时调用fizzbuzz(7)会输出:

[1, 2, "Fizz", 4, "Buzz", "Fizz", 7]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:50:35