JavaScript的函数递归

        /*********原始递归写法*********/
function digui(num){
if(num <= 1){
return 1;
}else{
return num*digui(num-1);
}
}
var result_1 = digui(5);//120
//将函数的指针传递给另一个值
var digui_copy = digui;
var result_2 = digui_copy(5);//120
//digui变量指向的函数发生改变
digui = function(){
return 0;
}
var result_3 = digui_copy(5);//0

//使用arguments参数的callee的属性 解耦  非严格模式下的写法,严格模式下报错
function digui(num){
if(num <= 1){
return 1;
}else{
return num*arguments.callee(num-1);
}
}
var result_1 = digui(5);//120
//将函数的指针传递给另一个值
var digui_copy = digui;
var result_2 = digui_copy(5);//120
//digui变量指向的函数发生改变
digui = function(){
return 0;
}

var result_3 = digui_copy(5);//120

        /**********在严格模式和非严格模式下的通用写法**********/
var digui = (function f(n){
if(n <= 1){
return 1;
}else{
return n*f(n-1);
}
});
var result_1 = digui(5);
var copy_digui = digui;
var result_2 = copy_digui(5);
digui = null;
var result_3 = copy_digui(5);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值