JS实现函数递归、运用技巧
2018-01-13 11:53
351 查看
前言
所谓的递归函数就是在函数体内调用本函数。使用递归函数一定要注意,处理不当就会进入死循环。递归函数只有在特定的情况下使用 ,比如阶乘问题。
递归计算阶乘的例子
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>js中递归函数的使用</title> <script type="text/javascript"> function f(num){ if(num<1){ return 1; }else{ return f(num-1)*num; } } </script> </head> <body> <script type="text/javascript"> alert("10!的结果为:"+f(10)); </script> </body> </html>
js递归函数调用自身时的保险方式
一般思路
function fact(num){ if (num<=1){ return 1; }else{ return num*fact(num-1); } } var anotherFact = fact; fact = null; alert(antherFact(4)); //由于fact已经不是函数了,所以出错。
使用arguments.callee
arguments.callee 指向正在执行的函数的指针。警告:在严格模式下,第5版 ECMAScript (ES5) 禁止使用 arguments.callee()。当一个函数必须调用自身的时候, 避免使用 arguments.callee(), 通过要么给函数表达式一个名字,要么使用一个函数声明.参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/callee
function fact(num){ if (num<=1){ return 1; }else{ return num*arguments.callee(num-1); //此处更改了。 } } var anotherFact = fact; fact = null; alert(antherFact(4)); //结果为24.
阿里巴巴2015年前端面试题
请实现一个fibonacci函数,要求其参数和返回值如下所示: /** *@desc: fibonacci *@param: count {Number} *@return: result {Number} 第count个fibonacci值,计数从0开始 fibonacci数列为:[1, 1, 2, 3, 5, 8, 13, 21, 34 …] 则getNthFibonacci(0)返回值为1 则getNthFibonacci(4)返回值为5 */ function getNthFibonacci(count) { }
标准答案:
function fib(count) { //参数判断 var count = parseInt(count); if (isNaN(count) || count < 0) { return 0; } function f(count) { if (count <= 1) return 1; return arguments.callee(count - 1) + arguments.callee(count - 2); //callee是装逼用的,直接用f也行 } return f(count); }
相关文章推荐
- CSS3 函数技巧 用css 实现js实现的事情
- js如何实现一定时间后去执行一个函数
- 编写一个函数reverse_string(char * string)(递归实现)
- 试编写一个函数,返回一颗给定二叉树在中序遍历下的最后一个节点(分别用递归和非递归实现)
- 编程小技巧共享(用js实现的页面单元复制)
- JS实现运动缓冲效果的封装函数示例
- js 小技巧之利用匿名函数控制方法访问权限
- JQuery的read函数与js的onload不同方式实现
- .编写一个函数实现n^k,使用递归实现
- [HTML/JS]利用JQuery的load函数动态加载其它页面的内容的实现代码代替Ifram
- JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)_javascript技巧_
- 运用递归编写strlen函数实例
- MFC 运用CFileFind 类 递归实现文件夹的 复制 (MFC 文件操作 二)
- 使用"函数递归"实现的树型菜单
- 如何运用相关函数实现PHP读取文件
- C语言:编写reverse_string(char * string)(递归实现)函数,将参数字符串中的字符反向排列
- 编写一个函数实现n^k,使用递归实现
- js实现tab选项卡函数代码
- JS利用函数递归求阶乘
- java、js中实现无限层级的树形结构(类似递归)