递归的理解和简单应用

发布于 2020-02-20  1120 次阅读 本文共709个字


什么是递归?

就是函数自己调用自己执行。

function sum(num) {
    if (num > 0){
  return num + sum(num-1);
 }else {
        return 0;
    }
}

console.log(sum(4));   // 10

这个函数内部发生了什么呢,我们来给分解一下:

1、4 + sum(4-1)
2、4 + 3 + sum(3-1)
3、4 + 3 + 2 + sum(2-1)
4、4 + 3 +2 + 1 + sum(1-1)   ---> 4+3+2+1+0 = 10

故,最后结果输出为0

arguments 实现的递归:

function sum(num) {
    if (num > 0) {
        return num + arguments.callee(num - 1)
    } else {
        return 0;
    }
}
var result = sum;
sum = null;
console.log(result(4));     //10

命名函数的递归:

var funA = function fun(num) {
    if (num > 0) {
        return num + fun (num -1)
    } else { 
        return 0;
    }
};
var result = funA;
funA = null;
console.log(result(4))    // 10

附加:在JS中()的作用:创建一个块级作用域,独立,闭合的私有空间;在数学代码执行和数学运算中,优先运算执行。

实际栗子:

用setTimeout实现一个setInterval的功能:

function myInterval(time) {
    if (time <= 2000) {
        setTimeout(() => {
             time += 100;
             console.log(time);
             myInterval(time);
        });
    };
};
myInterval(100);


努力,只为遇见更好的自己!