javascript - JS的函数递归阶乘问题?

查看:73
本文介绍了javascript - 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)是什么意思?

求各位大神指教 谢谢谢谢

解决方案

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,就没法继续调用了,所以开始返回上一层,一直返回到第一次调用为止。

这篇关于javascript - JS的函数递归阶乘问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆