zoukankan      html  css  js  c++  java
  • 递归

    一、概念:函数中调用函数自己,但是一定要有结束的条件

        <script>
        var i=0;
        function f1(){
            i++;
            if(i<5){
                f1();
            }
            console.log("哈哈");
        }
        f1();//输出5次哈哈
        </script>

    二、案例

        <!-- 递归实现:求n个数字的和 -->
        <script>
            function getSum(n){
                if(n==1){
                    return 1;
                }
                return n+getSum(n-1);
            }
            console.log(getSum(5));//15
            //执行过程:
            //1.代码执行getSum(5)---->进入函数,此时执行的n=5.执行5+getSum(4),此时代码等待,先不进行计算
            //2.执行getSum(4)----->进入函数,执行n=4,执行4+getSum(3),此时代码等待,先不进行计算
            //3.执行getSum(3)------>进入函数,执行n=3,执行3+getSum(2),此时代码等待,先不进行计算
            //4.执行getSum(2)------>进入函数,执行n=2,执行2+getSum(1),此时代码等待,先不进行计算
            //5.执行getSum(1)------>进入函数,执行n=1,返回结果是1,所以getSum(1)=1;
            //6.往回走:2+getSum(1)------>2+1;
            //7.往回走:3+getSum(2)------>3+2+1;
            //8.往回走:4+getSum(3)------>4+3+2+1;
            //9.往回走:5+getSum(4)------>5+4+3+2+1--->得出结果等于15
            //10.结束输出结果15
        </script>
        <!-- 递归案例:求一个数字各个位数上的和 -->
        <script>
            function getEverySum(n){
                if(n<10){
                    return n;
                }
                return n%10+getEverySum(parseInt(n/10));
            }
            console.log(getEverySum(1265));//14
        </script>
        <!-- 递归案例:求斐波那契数列 -->
        <script>
            function getFib(n){
                if(n==1||n==2){
                    return 1;
                }
                return getFib(n-1)+getFib(n-2);
            }
            console.log(getFib(10));//55
        </script>

    三、应用:(后面文章介绍)

    • 深拷贝
    • 遍历DOM树
  • 相关阅读:
    js中的面向对象
    js 定时器
    js中 关于DOM的事件操作
    js 函数
    js流程控制;常用内置对象
    js数据类型基础
    js基础语法
    js初识
    css 选择器;盒模型
    软件系统建模之用例视图
  • 原文地址:https://www.cnblogs.com/EricZLin/p/9081219.html
Copyright © 2011-2022 走看看