JavaScript递归函数定义与用法实例分析
程序员文章站
2024-02-07 12:49:22
本文实例讲述了javascript递归函数定义与用法。分享给大家供大家参考,具体如下:
递归函数是一个函数通过名字调用自身的情况下形成的,比如经典的递归阶乘函数:...
本文实例讲述了javascript递归函数定义与用法。分享给大家供大家参考,具体如下:
递归函数是一个函数通过名字调用自身的情况下形成的,比如经典的递归阶乘函数:
function factorial(num) { if (num <= 1) { return 1; } else { return num * factorial(num - 1); } }
上面的这种写法,可能会造成问题:
var anotherfactorial = factorial; factorial = null; console.log(anotherfactorial(4));//出错
因为 factorial 函数定义内部使用了自身的函数名,所以当 factorial 被置为 null 后,factorial 已不是函数,自然报错啦 o(∩_∩)o~。
可以使用 arguments.callee 指向正在执行的函数的指针来避免上面出现的问题:
function factorial(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num - 1); } } var anotherfactorial = factorial; factorial = null; console.log(anotherfactorial(4));
运行结果:24
但在严格模式下,不能访问 arguments.callee
,但可以使用命名函数表达式来实现上述功能:
var factorial = ( function f(num) { if (num <= 1) { return 1; } else { return num * f(num - 1); } } ); var anotherfactorial = factorial; factorial = null; console.log(anotherfactorial(4));
感兴趣的朋友可以使用在线html/css/javascript代码运行工具:http://tools.jb51.net/code/htmljsrun测试上述代码运行效果。
更多关于javascript相关内容感兴趣的读者可查看本站专题:《javascript数据结构与算法技巧总结》、《javascript数学运算用法总结》、《javascript排序算法总结》、《javascript遍历算法与技巧总结》、《javascript查找算法技巧总结》及《javascript错误与调试技巧总结》
希望本文所述对大家javascript程序设计有所帮助。
上一篇: python基础之实现float函数
下一篇: Python爬虫笔记
推荐阅读
-
JavaScript递归函数定义与用法实例分析
-
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
-
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
-
PHP回调函数概念与用法实例分析
-
javascript设计模式 – 享元模式原理与用法实例分析
-
javascript设计模式 – 职责链模式原理与用法实例分析
-
javascript设计模式 – 代理模式原理与用法实例分析
-
javascript设计模式 – 迭代器模式原理与用法实例分析
-
javascript函数递归、回调、闭包和作用域用法实例详解
-
JavaScript闭包原理与用法实例分析