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

Javascript 阶乘函数运行错误:超过最大调用堆栈大小,javascript,factorial,Javascript,Factorial,我用javascript制作了一个计算器。我想添加阶乘,但chrome告诉我:超过了最大调用堆栈大小。 这些是代码的某些部分,我确信问题在于这些代码而不是其他代码 function fac(firstNum){ firstNum=Number(document.getElementById('result').value); if(firstNum==0){ document.getElementById('result').value = 1; }

我用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;
}
并将该功能应用到开关箱中

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);
嗯,,
Bryan

您不返回任何内容,也从不使用提供给您的
firstNum
。是的,您需要返回一个值。假设您正在尝试阶乘的递归版本。但是,我到底要做什么?给出代码