美文网首页
数组和算法—递归

数组和算法—递归

作者: 落雨飞尘 | 来源:发表于2017-06-30 09:46 被阅读0次

递归

1.什么叫做递归

答:当前函数自己调用自己,要理解递归,废话不多说,直接看一道面试题

需求:求1~100之间,不能被3整除的整数的和

function sum(n) {
        if(n==0){ //如果传进来的值是0,说明累加到头了。无需继续累加,返回为0即可。没有再次执行条件,停止执行了。
            return 0;
        }
        if(n%3==0){ //如果传进来的值能被3整除,我们不需要累加,直接让值减一,即sum(n-1),因为有sum(n-1)这个条件继续传入到sum函数,继续执行
            return sum(n-1);
        }
        return n+sum(n-1); //用当前值n和下一个值sum(n-1)进行累加,有再次执行的条件,再次传入sum函数,继续执行
    }
    var total = sum(100); //执行函数,传入实参,把值赋值给total;
    console.log(total);

结果为 3367;此结果正确

  • 说明:此面试题我是用递归做的,一个函数自己调用自己。其实面试官也是想要这种方法(用if或者while等判断也可),相信大家看这个实例,应该对递归有了大致了解吧。

2.定时器和递归

我们先用setInerval写一个循环输出的例子

var count = 0;
    var timer = null;
    clearInterval(timer);
    timer = setInterval(function () {
        count++;
        console.log(count);
        if(count==10){
            clearInterval(timer);
        }
    },1000);

结果为 1,2,3,4,5,6,7,8,9,10

用setTimeout实现轮询功能(仿setInterval)

var count = 0;
    var timer = null;
    function move() {
        count++;
        console.log(count);
        if(count==10){return;} //每一次执行move方法,都会创建一个新的定时器,导致很多定时器累积,占内存,所以在新创建定时器之前,我们应该清楚定时器;
        clearTimeout(timer);
        timer = setTimeout(move,1000);
    }
    move();

结果为 1,2,3,4,5,6,7,8,9,10

对于前端来说,我们相对于后台使用递归并没有那么soEasy,但是这种重要的思想,我们还是要去尝试的。

相关文章

  • 数组和算法—递归

    递归 1.什么叫做递归 答:当前函数自己调用自己,要理解递归,废话不多说,直接看一道面试题需求:求1~100之间,...

  • 数据结构与算法二:认识O(NlogN)的排序

    1、递归算法 用递归算法求数组 arr[] 中的最大值 N程序实现: 递归逻辑图解如下图所示: 2、归并排序 归并...

  • 常见排序算法(6)--归并排序(非递归版)

    非递归归并排序算法 非递归排序与递归排序相反,将一个元素与相邻元素构成有序数组,再与旁边数组构成有序数组,直至整个...

  • 【dp笔记】动态规划解题一般思路

    课程笔记:程序设计与算法(二)算法基础:dp 递归到动规的一般转化方法 递归函数有n个参数就定义n维的数组 数组的...

  • python递归算法、尾递归算法及优化

    文章概述 递归算法和尾递归概述递归算法的优化 递归算法 介绍:递归算法是计算机编程领域非常重要的一种算法,采用分而...

  • 回溯算法,Leetcode 46和Leetcode 980

    什么是回溯算法,以及什么时候会用到 回溯算法和递归有关系。它是利用递归来寻找一个问题的所有解,例如一个数组的排列组...

  • 算法一看就懂之「 排序算法 」

    之前的文章咱们已经聊过了 「 数组和链表 」 「 堆栈 」 「 队列 」 「 递归 」 下图是常用排序算法的时间空...

  • 算法(3):数组

      一鼓作气,再而衰,三而竭,第三篇走起! 目录:算法:附录算法(1):递归算法(2):链表算法(3):数组算法(...

  • 快速幂模板

    递归算法 非递归算法

  • QuickSort算法实现Java版

    快速排序算法实现,实质是采用了递归算法(调用栈),对于数组排序,主要在于找到基线条件即数组剩余0或1个元素,这也是...

网友评论

      本文标题:数组和算法—递归

      本文链接:https://www.haomeiwen.com/subject/uhsbcxtx.html