本文介绍了JavaScript 阶乘递归的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在下面的脚本中,为什么 badFactorial
会在 goodFactorial
工作时炸掉堆栈?
In the following script, why does badFactorial
blow the stack while goodFactorial
works?
function badFactorial(n){
if( n < 0){
return 1;
}
if(n < 2){
return n;
}
return badFactorial(n * (n-1));
}
function goodFactorial(n){
if(n < 2){
return n;
}
return goodFactorial(n-1) * n;
}
推荐答案
你的创造无限循环
badFactorial(n * (n-1));
它只会不断增加.
假设你通过了 7 .而不是减少,你正在做
say you passe in 7 . instead of decreasing, youre doing
返回 badfactorial(7 * 6)
当你想要时:
return badfactorial(6) * 7;
因此将回报更改为您的好因子,
so change the return to be like youre goodfactorial's ,
badfactorial(n-1) * n;
这篇关于JavaScript 阶乘递归的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!