js使用递归来实现阶乘

2017-9-14 16:17:05 4,462 views
第一种
function factorial(num){
  if(num<=1){
return 1;
  }else{
  return num*factorial(num-1);
}
}
//这样定义问题是函数的执行与函数名factorial紧紧耦合在了一起
alert(factorial(5));//120
第二种
function factorial(num){
  if(num<=1){
return 1;
  }else{
  return num*arguments.callee(num-1);
}
}
alert(factorial(5));//120
//2这样可以消除耦合
第三种
var fn=(function f(num){
  if(num<=1){
return 1;
  }else{
  return num*f(num-1);
}
});
//使用arguments.callee时,会在严格模式下报错,严格模式下不能通过脚本访问arguments.callee,可以用命名函数表达式来达成相同结果
alert(factorial(5));//120

 

1

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。