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,就没法继续调用了,所以开始返回上一层,一直返回到第一次调用为止。
添加回答
举报
0/150
提交
取消