zoukankan      html  css  js  c++  java
  • js数据结构与算法--递归

    递归,函数自己调用自己

    return

    1. 返回值,
    2. 后面的代码不执行
            function fn(num){
                console.log(num)
                if(num == 0){
                    return;
                }
                 fn(num-1)
            }   
            fn(10)
    

    1-100之间,把所有能被3并且能被5整除的数获到,然后累加求和

    for循环

            function fn(num) {
                var sum = 0;
                for (var i = 0; i < num; i++) {
                    if (i % 3 == 0 && i % 5 == 0) {
                        sum += i;
                    }
                }
                return sum;
            }
            console.log(fn(100))
    

    递归

           function fn(num) {
                if (num > 100) {
                    return 0;
                }
                if (num % 15 == 0) {
                    return num + fn(num + 1)
                }
                return fn(num + 1)
            }
            console.log(fn(1));
            // 1 -> fn(1+1)
            // 2 -> fn(2+1)
            // ...
            //15 -> 15+fn(15+1)
            //      16 -> 15+fn(16+1)
            //      30 -> 15+fn(30+1);
            //          31 -> 15+30+fn(31+1)
            //          ...
            //          15+30+45+60+75+90+fn(100)
            //          15+30+45+60+75+90+fn(101)  => 15+30+45+60+75+90+0
    

    1-10之间,把所有能被2整除的数获到,然后累加求和

            function fn(num) {
                if (num > 10) {
                    return 0;
                }
                if (num % 2 == 0) {
                    return num + fn(num + 1)
                }
                return fn(num + 1)
            }
            console.log(fn(1));
            // 1 => fn(1+1) => fn(2)
            // 2 => 2+fn(2+1) => 2+fn(3)
            // 3 => 2+fn(3+1) => 2+fn(4)
            // 4 => 2+4+fn(4+1) => 2+4+fn(5)
            //..
            //10 2+4+6+8+10+fn(11)
            //11 2+4+6+8+10+0
    

    1-10以内所有偶数积

            function fn(num){
                if(num<1){
                    return 1;
                }
                if(num%2 ==0){
                    return num* fn(num-1)
                }
                return fn(num-1)
            }
            var result = fn(10);
            console.log(result);
    
  • 相关阅读:
    BZOJ2034 【2009国家集训队】最大收益
    「PKUSC2018」最大前缀和
    「PKUSC2018」真实排名
    【FJOI2016】建筑师
    【FJOI2014】最短路径树问题
    【HNOI2007】紧急疏散
    【TJOI2015】线性代数
    【SDOI2017】新生舞会
    POJ2079 Triangle
    【SDOI2011】工作安排
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9898734.html
Copyright © 2011-2022 走看看