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

JS的函数递归阶乘问题?

JS的函数递归阶乘问题?

喵喵时光机 2018-11-15 14:15:34
        function jiecheng(n){            if(n==1){                return 1            }else{                return n*jiecheng(n-1)                }        }        var n=5;        alert(jiecheng(6))怎么理解这段代码的计算过程,特别是里面return后面n*jiecheng(n-1)是什么意思?求各位大神指教 谢谢谢谢
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

jiecheng(5)


n不等于1,所以jecheng(5)==> n*jiecheng(n-1) ==> 5*jeihceng(4)

5*jiecheng(4)


n不等于1,所以jecheng(4)==> n*jiecheng(n-1) ==> 4*jeihceng(3)

5*4*jiecheng(3)


n不等于1,所以jecheng(3)==> n*jiecheng(n-1) ==> 3*jeihceng(2)

5*4*3*jiecheng(2)


n不等于1,所以jecheng(2)==> n*jiecheng(n-1) ==> 2*jeihceng(1)

5*4*3*2*jiecheng(1)


这个时候jiecheng函数的参数等于一,所以返回1,

而不是继续n*jiecheng(n-1) ==> 1*jeihceng(0)

所以变成5*4*3*2*1,递归就是函数里面调用自己,当调用结束的时候一个个返回上一层函数。最后被调用的时候返回1,就没法继续调用了,所以开始返回上一层,一直返回到第一次调用为止。

查看完整回答
反对 回复 2018-12-14
  • 1 回答
  • 0 关注
  • 740 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号