阶乘函数运行错误:超过了最大调用堆栈大小

factorial function running error : Maximum call stack size exceeded

本文关键字:调用 堆栈 过了 函数 运行 错误 阶乘      更新时间:2023-09-26

我用javascript做了一个计算器。我想添加阶乘到它,但chrome对我说:最大调用堆栈大小超过。这些是代码的一部分,我确定问题出在这些代码上,而不是其他的

function fac(firstNum){
    firstNum=Number(document.getElementById('result').value);
    if(firstNum==0){
        document.getElementById('result').value = 1;
    }
    var a = firstNum*fac(firstNum-1);
    document.getElementById('result').value = a;
}

和using功能到switch case

case 'n!':
    document.getElementById('result').value = fac();
break;

您需要将阶乘算法与UI代码分开。

function factorial(n) {
  if (n == 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}

然后使用此代码从UI字段中检索号码,例如factInput,并放置结果字段,例如factResult:

var number = document.getElementById('factInput').value;
document.getElementById('factResult').value = factorial(number);

HTH,布莱恩