JavaScript中實現遞歸的三種方式

JavaScript實現遞歸的三種方式,以斐波拉契數列爲例函數

1.這種方式是和其餘高級語言同樣,不過存在問題,JavaScript中函數也是對象,因此能夠指向其餘的對象。spa

function f1(num){
    if(num<=1){
        return 1;
    }
    return num* f1(num-1)
}
f(5); // 120
f11 = f1;
f1 = null;
f11(10) //error

2.使用arguments.callee,可是 arguments.callee在嚴格模式調用會出錯code

function f2(num){
  
if(num<=1){ return 1; } return num * arguments.callee(num-1) } f2(5); // 120 f21=f2; f2 = null; f21(5); // 120

3.合理的方式對象

var f3 = (function f(num){
  if(num<=1){
        return 1;
    }
    return num * f(num-1)
})
f3(5); // 120
f31=f3;
f3 = null;
f31(5); //120
相關文章
相關標籤/搜索