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
相关文章
相关标签/搜索