Javascript 阶乘函数运行错误:超过最大调用堆栈大小
我用javascript制作了一个计算器。我想添加阶乘,但chrome告诉我:超过了最大调用堆栈大小。 这些是代码的某些部分,我确信问题在于这些代码而不是其他代码Javascript 阶乘函数运行错误:超过最大调用堆栈大小,javascript,factorial,Javascript,Factorial,我用javascript制作了一个计算器。我想添加阶乘,但chrome告诉我:超过了最大调用堆栈大小。 这些是代码的某些部分,我确信问题在于这些代码而不是其他代码 function fac(firstNum){ firstNum=Number(document.getElementById('result').value); if(firstNum==0){ document.getElementById('result').value = 1; }
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
。是的,您需要返回一个值。假设您正在尝试阶乘的递归版本。但是,我到底要做什么?给出代码