JS的函数递归阶乘问题?

        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)是什么意思?

求各位大神指教 谢谢谢谢


喵喵时光机
浏览 741回答 1
1回答

慕的地8271018

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,就没法继续调用了,所以开始返回上一层,一直返回到第一次调用为止。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript