数组和算法—递归

2017-06-30  本文已影响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;此结果正确

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,但是这种重要的思想,我们还是要去尝试的。

上一篇 下一篇

猜你喜欢

热点阅读