js数据结构与算法--递归

Posted sfornt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

以上是关于js数据结构与算法--递归的主要内容,如果未能解决你的问题,请参考以下文章

《数据结构与算法之美》07——递归

数据结构与算法三个经典案例带你了解动态规划

递归算法之阶乘代码实现与非递归实现

Java数据结构与算法——递归与回溯

Js 代码递归实现树形数据与数组相互转换。

数据结构与算法——初谈递归