• 技术文章 >web前端 >js教程

    JavaScript如何使用递归

    醉折花枝作酒筹醉折花枝作酒筹2021-04-29 09:12:43转载349
    本篇文章给大家介绍一下JavaScript递归的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

    递归:

    函数中用调用函数自己,此时就是递归,递归一定要有结束条件

        function f1() {
            console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
            f1();
        };
        f1();//浏览器崩溃,因为没有结束条件——死循环
    
    	改进如下:
    	    var i=0;
        function f1() {
            i++;
            if (i<5){
                f1();
            }
            console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
        };
        f1();

    小栗子:

    递归实现:求n个数字的和 n=5 ------->5+4+3+2+1

    //for 循环写法:
        var sum=0;
        for (var i=0;i<=5;i++){
            sum+=i;
        }
        console.log(sum);
    ----------------------分割线---------------------------
    
       function getSum(x) {
            if (x==1){
              return 1
            }
            return x+getSum(x-1);
        };
    
        var sum1=getSum(5);
        console.log(sum1);
        console.log(getSum(10));

    执行过程:
    代码执行getSum(5)—>进入函数,此时的x是5,执行的是5+getSum(4),此时代码等待

    此时5+getSum(4),代码先不进行计算,先执行getSum(4),进入函数,执行的是4+getSum(3),等待,先执行的是getSum(3),进入函数,执行3+getSum(2),等待,先执行getSum(2),进入函数,执行 2+getSum(1);等待,先执行getSum(1),执行的是x==1的判断,return 1,所以,

    此时getSum(1)的结果是1,开始向外走出去

    2+getSum(1) 此时的结果是:2+1

    执行:

    getSum(2)---->2+1

    3+getSum(2) 此时的结果是3+2+1

    4+getSum(3) 此时的结果是4+3+2+1

    5+getSum(4) 此时的结果是5+4+3+2+1

        结果:15

    再来几个:

        //递归案例:求一个数字各个位数上的数字的和:  123   --->6 ---1+2+3
        //523
        function getEverySum(x) {
            if(x<10){
                return x;
            }
            //获取的是这个数字的个位数
            return x%10+getEverySum(parseInt(x/10));
        }
        console.log(getEverySum(1364));//5
     //递归案例:求斐波那契数列
    
        function getFib(x) {
            if(x==1||x==2){
                return 1
            }
            return getFib(x-1)+getFib(x-2);
        }
        console.log(getFib(12));

    【推荐学习:javascript高级教程

    以上就是JavaScript如何使用递归的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:js递归
    上一篇:JavaScript中forEach如何退出循环 下一篇:页面javascript如何获取后台传到页面的值
    大前端线上培训班

    相关文章推荐

    • javascript如何将字符串转换为数字• javascript数组怎么判断是否存在某元素• javascript怎么删除table表格• 详解javascript中将数组拆分为偶数块的几种方法• JavaScript中forEach如何退出循环

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网