JS基础-一个完美的递归函数

目录

一、什么是递归函数   

二、完美的递归方法

三、总结

一、什么是递归函数   

             递归函数是在一个函数内通过名字调用自身的情况。

二、完美的递归方法

            写法一:

/*
*方法说明:递归阶乘函数
*/
function test(num){
    if(num <=1){
        //递归停止的条件,必须得需要
        return 1;
    }
    else{
        //调用递归
        return num * test(num-1);
    }
}

缺点:

         如果把test方法保存到一个变量,再释放test方法,使指向原始函数的引用只剩下变量。会报错。

如下:

JS基础-一个完美的递归函数_第1张图片

写法二:

/*
*方法说明:递归阶乘函数
*/
function test(num){
    if(num <=1){
        //递归停止的条件,必须得需要
        return 1;
    }
    else{
        //调用递归,使用arguments.callee的方法代替函数名
        return num * arguments.callee(num-1);
    }
}

优点:

         arguments.callee指向一个正在执行的函数的指针。可以解决写法一中的缺点。

缺点:

         严格模式下,不支持arguments.callee。

写法三

/*
*方法说明:递归阶乘函数
*/
var test = (function f(num){
    if(num <=1){
        //递归停止的条件,必须得需要
        return 1;
    }
    else{
        //调用递归
        return num * f(num-1);
    }
});

可以解决写法一、写法二中的问题 

你可能感兴趣的:(JS)