我已经使用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);
HTH,布莱恩
您可以尝试以下方法:
function factorial(n) {
if (n < 0 || n > 12)
throw new RangeError();
return n <=1 ? 1 : n*factorial(n-1);
}