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树
  • 相关阅读:
    创建可视化优秀网站的40个精美jquery插件推荐
    究极程序员跨过的艰难六步
    编写可移植的PHP代码
    程序员如何保持优秀
    网站安全检查列表
    PHP之谈(四)——smarty模板的学习
    PHP
    弱校ACM奋斗史
    学习PHP重在坚持
    About Me
  • 原文地址:https://www.cnblogs.com/EricZLin/p/9081219.html
Copyright © 2011-2022 走看看