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

亚瑟
• 阅读 1055

递归,函数自己调用自己

return

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

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

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);
点赞
收藏
评论区
推荐文章
凯特林 凯特林
4年前
浅谈JS中的递归
一、递归递归(英语:Recursion)在数学与计算机科学中,是指在函数的定义中使用函数自身的方法在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数其核心思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解一般来说,递归需要有边界条件、递归前进阶段和递归返回阶段。当边界条件不满足时,递归前进;当边界条件满
徐小夕 徐小夕
4年前
如何优雅的使用javascript递归画一棵结构树
递归和尾递归简单的说,递归就是函数自己调用自己,它做为一种算法在程序设计语言中广泛应用。其核心思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的
待兔 待兔
10个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Irene181 Irene181
3年前
一篇文章带你了解Python递归函数
一、什么是递归函数?在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。二、函数的递归调用原理实际上递归函数是在栈内存上递归执行的,每次递归执行一次就会耗费一些栈内存。栈内存的大小是限制递归深度的重要因素三、案例分析1.求阶乘计算阶乘n!1x2x3x…xn,可以用
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
LinMeng LinMeng
4年前
js 实现阶乘
使用递归functionjc(n){if(n<2){return1;}else{returnnjc(n1);}}console.log(jc(5));使用while循环functionww(num){varresult1;
Jacquelyn38 Jacquelyn38
3年前
这些JS工具函数够你用到2020年底了
前言活不多说,自己平时搜集的干货函数奉上。干货函数找出数字在数组中下一个相邻的元素let i  "";let rr  ;const name  (n, arr1)    let num  Number(n);    for (let i  0; i < arr1.length; i)         const elemen
Stella981 Stella981
3年前
JS 对象数组Array 根据对象object key的值排序sort,很风骚哦
有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak
Wesley13 Wesley13
3年前
mysql存储引擎MYISAM和INNODB对比测试
测试源码:header('Contenttype:text/html;charsetutf8;');//for($num0;$num<8;$num){insert();insert(false);//}functioninsert($myisamtrue)
Stella981 Stella981
3年前
Python之函数递归与迭代
函数递归:  定义:程序调用自身的编程技巧称为递归(recursion)。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量
Wesley13 Wesley13
3年前
JAVA学习入门篇_递归结构
递归结构递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。​利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。​递归结构包括两个部分:​1.定义递归头。解答:什么