JavaScript中递归函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/CassieCD/article/details/102748996

JavaScript中递归函数

什么是递归?
就是在函数体内调用本函数。是一种调用模式,是一种逻辑程序基础的体现。

== 递归会消耗大量内存,在实际开发中很少使用==

注意:递归最重要的是终止条件。

利用递归计算n的阶乘

function acc(n){
        if(n<=1){
            return 1;
        }else{
                return n*acc(n-1)
            }
    }
    console.log(acc(4));

这里计算的是4的阶乘;从1开始,return 1;然后2,return 2乘acc(1)——就是2乘1;依次…

利用递归求斐波那契数列(1,1,2,3,5,8,13,21,34,55,89…)

var m=1;
    while(true){
        function fiber(m){
            if(m-1==0 || m-2==0){
                return 1;
            }else{
                    return (fiber(m-1)+fiber(m-2));
                }
        }
        console.log(fiber(m));
        m++;
    }

根据斐波那契数列的特点,m代表数列的第几项,我们可以得到fiber(m)=fiber(m-2)+fiber(m-1);
那么就要求:m>2;所以就用到了if(){}else{} 分支结构。
当m=1,m=2时,return 1;
这里利用了while做了一个死循环,按顺序输出每一项的数字。

不理解可以从利用递归计算 1+2+3+4+5=?开始;

function fn(n){
    if(n<=1){
        return 1;
    }else{
        return n+fn(n-1)
    }
}
console.log(fn(5))

这里n既代表第几项,又代表对应项里的数字
return 当前项n加上前一项的值。

猜你喜欢

转载自blog.csdn.net/CassieCD/article/details/102748996