javascript遞迴整理

森林蘑菇_mushroom發表於2017-10-30

普通遞迴

var factorial =function(num){
        if(num<=1){
            return 1
        }else{
            return num*factorial(num-1)
        }
    }
console.log(factorial(6));//720
var copy=factorail;
factorail=null;
console.log(copy(6))//factorail is not defined複製程式碼
  • 普通遞迴會造成 指向這個函式的只有copy,factorail被設定成了空。

改進遞迴

var factorial =function(num){
        if(num<=1){
            return 1
        }else{
            return num*arguments.callee(num-1)
        }
    }
console.log(factorial(6));
var copy=factorial;
factorial=null;
console.log(factorial);
console.log(copy(6));複製程式碼
  • 這樣函式就可以隨便用了,試了下IE8也有用......,'use strict'模式下,報錯。

終極遞迴(命名函式表示式)

var factorial =(function gg(num){
        if(num<=1){
            return 1
        }else{
            return num*gg(num-1)
        }
    }
)
console.log(factorial(6));
var copy=factorial;
factorial=null;
console.log(factorial);
console.log(copy(6));複製程式碼
  • 其實就是把gg給保護了起來。

相關文章