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

时间:2014-08-04 19:30:19

标签: javascript factorial

我使用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;

问题是什么?

1 个答案:

答案 0 :(得分:1)

您需要将因子算法与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, 布赖恩