我使用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;
问题是什么?
答案 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, 布赖恩