为了账号安全,请及时绑定邮箱和手机立即绑定

JS递归阶乘是怎么运算的

JS递归阶乘是怎么运算的

问题多多求解答 2016-07-13 20:11:41
<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>
查看完整描述

2 回答

?
上头

TA贡献7条经验 获得超5个赞

兄弟你这个代码写起来有点不怎么好,我给个简单明了的例子代码给你,希望对你有帮助。

    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 反对 回复 2016-07-14
?
super_mb

TA贡献101条经验 获得超107个赞

就是这么乘的:调用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 反对 回复 2016-07-13
  • 2 回答
  • 0 关注
  • 2542 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信