js中斐波拉切数的三种写法;

js中斐波拉切数的三种写法;

function factorial(num){
    if(num <=1){
        return 1;
    }else{
        return num* factorial(num-1);
    }
}    
console.log(factorial(5));//120

面这个函数的执行与函数名紧紧耦合在了一起,可以使用arguments.callee可以消除函数解耦

第二种(在严格模式下,访问这个属性会抛出TypeError错误)

function factorial(num){
    if(num <=1){
        return 1;
    }else{
        return num* arguments.callee(num-1);
    }
}    
console.log(factorial(5));//120

第三种:

var factorial = function fn(num){
    if(num <=1){
        return 1;
    }else{
        return num*fn(num-1);
    }
};    
console.log(factorial(5));//120
原文地址:https://www.cnblogs.com/mc67/p/6901466.html