JavaScript中实现递归的三种方式

JavaScript实现递归的三种方式,以斐波拉契数列为例

1.这种方式是和其他高级语言一样,不过存在问题,JavaScript中函数也是对象,所以可以指向其他的对象。

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在严格模式调用会出错

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

 

posted @ 2019-09-11 16:59  tooSimple_sz  阅读(1137)  评论(0编辑  收藏  举报