猿问

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  已用计算机计算无误 看不懂的地方百度随便都可以了解到,希望可以帮到你。

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
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答