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

我的JavaScript阶乘程序仅返回1,请求排查代码问题

问题分析与修复

嘿,我一眼就发现你的阶乘函数为啥总是返回1了——for循环的条件写反啦!

问题根源

看你代码里的循环部分:

for (var i = num; i <= 1; i--) {
  factorialValue *= i;
}

当你传入num=10时,初始的i是10,这时候判断10 <= 1显然不成立,循环直接跳过了!factorialValue一直保持初始值1,所以不管你传什么正数进去,都会返回1。

修复方案

把循环条件改成i >= 1,这样循环才会从num开始,一直递减到1,依次相乘:

function factorial(num) {
  var factorialValue = 1;
  if (num === 0) {
    return factorialValue;
  } else {
    // 修正循环条件为i >= 1
    for (var i = num; i >= 1; i--) {
      factorialValue *= i;
    }
    return factorialValue;
  }
}

测试验证

现在运行你的测试代码:

console.log(factorial(10)); // 输出3628800
console.log(factorial(5));  // 输出120
console.log(factorial(3));  // 输出6
console.log(factorial(0));  // 输出1

所有结果都符合预期啦!

另外提个小建议:你可以给函数里的变量改个更清晰的名字,比如把factorialValue改成result,可读性会更好哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:32:40