递归函数

159 阅读1分钟

所谓递归函数就是函数在自身的函数体重调用自身

定义一个递归函数需要两个必要条件:

(1)包含一个结束递归的条件,避免程序陷入死循环;

(2)包含一个递归调用语句;

最简单的一个递归函数

function fn(n){
    if(n<=1){
       return;
    }
    else{
       return n*fn(n-1)
    }
}
fn(5)    //120

但在这种函数中会遇到fn is not a function的情况。这时可以借助arguments.callee这个方法来解决。

function fn(n){
    if(n<=1){
         return 1;
    }else{
         return n*arguments.callee(n-1)
    }
}
var aa = fn;
console.log(aa(5))    //120

但是arguments.callee是一个很大的对象,每次再去使用的时候,都需要去重新创建,若大量的进行使用,会严重影响浏览器的性能,早就已经淘汰。另一种操作就是内部函数起一个名字。

function fn(n){
    var array = [];
    return (function aa(){
        n*n-1
        n--;
        if(n !=0){
           aa();
        }
        return arr;
    })()
}
fn(5)    //120