function方法体中动态递归调用
2014-03-03 22:24
190 查看
下面的代码用到了递归,在方法体中重复调用自身。
假如在程序结构中,需要改变此方法的名称count,不仅要改变调用方法count,还要改变方法体中的count。用到的地方越多,需要改动的也就越多。
所以在递归时应该使用argurments.callee()动态调用,提示代码的可维护性。
//一个阶乘 function count(num){ if(num<=1){ return 1; } return num * count(num-1); } alert(count(5)); // 5*4*3*2*1 = 120
假如在程序结构中,需要改变此方法的名称count,不仅要改变调用方法count,还要改变方法体中的count。用到的地方越多,需要改动的也就越多。
所以在递归时应该使用argurments.callee()动态调用,提示代码的可维护性。
//动态获取方法名 function count(num){ if(num<=1){ return 1; } return num * argurments.callee(num-1); //这里的argurments.callee 就代表该方法本身。即使改变方法名称,方法体也不会受影响。 } alert(count(5)); // 5*4*3*2*1 = 120
相关文章推荐
- oracle 使用递归的性能提示测试对比
- JavaScript的递归之递归与循环示例介绍
- C# 递归查找树状目录实现方法
- 全排列算法的非递归实现与递归实现的方法(C++)
- php递归列出所有文件和目录的代码
- java递归菜单树转换成pojo对象
- 循环 vs 递归浅谈
- 深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
- C语言函数的递归和调用实例分析
- 归并排序的递归实现与非递归实现代码
- java 递归深入理解
- python使用递归解决全排列数字示例
- php递归方法实现无限分类实例代码
- 使用go和python递归删除.ds store文件的方法
- php递归使用示例(php递归函数)
- 栈是如何实现递归的
- C++ 分治与递归
- java递归调用算法
- 老鼠过迷宫问题——递归实现
- JavaScript函数递归调用