猿问
JS递归阶乘是怎么运算的
<script
type
="
text/javascript
">
//1*2*3*4*。。。n = n!
//n! = (n-1)*n
var a = 3;
function fun(n){
if(n == 1)
return 1;
else{
var b = fun(n-1);//n-1的阶乘
return b*n;
//return n*fun(n-1)
}
}
var s = fun(a);
</script>
问题多多求解答
浏览 2543
回答 2
2回答
上头
兄弟你这个代码写起来有点不怎么好,我给个简单明了的例子代码给你,希望对你有帮助。 function sum(num) { if(num > 1){ return num * arguments.callee(num - 1); // arguments.callee指向正在执行的函数 } else { return 1; // 当参数的值为1时,函数返回1 } } console.log(sum(5)) // 输出120 console.log(sum(10)) // 输出3628800 已用计算机计算无误 看不懂的地方百度随便都可以了解到,希望可以帮到你。
2
0
1
super_mb
就是这么乘的:调用fun(3),得到3*fun(2),于是接着调用fun(2),得到2*fun(1),接着调用fun(1),fun(1)返回1,所以不再调用,而是沿着刚刚调用的路径返回,也就是:调用fun(1)得到1,返回上一级2*fun(1),而fun(1)返回1,所以为2*1=2,即第二步调用的fun(2)返回的值是2,所以回到3*fun(2),得到3*2=6,接着返回到fun(3)的调用,即返回6给s
2
0
1
随时随地看视频
慕课网APP
相关分类
JavaScript
我要回答