js 递归

    xiaoxiao2021-03-25  106

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

    function sum(n){ if(n<=1){ return 1; }else{ return n+sum(n-1); } } sum(5);//结果 15

    这是一个经典的递归阶乘函数,但下面的代码却导致错误


    function sum(n){ if(n<=1){ return 1; }else{ return n+sum(n-1); } } var anSum = sum; sum = null; anSum(5);//报错,因为sum设置为null,不再是函数

    可以使用arguments.callee来实现递归,是一个指向正在执行的函数指针。

    function sum(n){ if(n<=1){ return 1; }else{ return n+arguments.callee(n-1); } } var anSum = sum; sum = null; anSum(5);//结果 15

    但在严格模式下会报错,可以使用命名函数表达式来达成想要的效果

    var sum =function s(n){ if(n<=1){ return 1; }else{ return n+s(n-1); } } var anSum = sum; sum = null; anSum(5);//结果 15

    这种形式下,无论严格模式还是非严格模式都可以实行。

    转载请注明原文地址: https://ju.6miu.com/read-19207.html

    最新回复(0)