js 递归

时间:2019-04-18
本文章向大家介绍js 递归,主要包括js 递归使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

原博客地址:https://blog.csdn.net/genius_yym/article/details/53945766

一、知识说明

function fun()
{
    // 自己调用自己,称为递归调用
    fun();
    console.log("m2");
}
fun();

二、函数+变量

//求n个数字的和,5 计算1+2+3+4+5
        var sum = 0;
        for (var i = 1; i <= 5; i++) {
            sum += i;
        }
        console.log(sum);


        //递归实现:求n个数字的和   n=5--->  5+4+3+2+1
        function getSum(x) {
            if (x == 1) {
                return 1;
            }
            return x + getSum(x - 1);
        }

        console.log(getSum(5));
        
        // 用递归 来求 5 的阶乘
        // 定义一个函数,用于求 n 的阶乘
        function func(n)
        {
            if (n == 1)
            {
                return 1;
            }
            // func(n-1) 因为传递的参数是 n-1,那么就是求 (n-1) 的阶乘
            return n * func(n-1);
        }
        console.log(func(5));

三、函数+函数

//斐波拉契题(兔子生兔子题目)--从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少
        // 产量分析:1, 1, 2, 3, 5, 8, 13, 21 。。。
        // 第n个月的兔子总数  =  第n-1个月的兔子总数 + 第n-2个月的兔子总数
        // 问题: 求任意月兔子的总数

        function func( n )
        {
            if (n == 0 || n == 1)
            {
                return 1;
            }
            return func(n-1) + func(n-2);
        }
        console.log(func(22))

说白了,函数的递归就是在函数中调用自身。概念就是这样了,就看你怎么灵活的调用了。