JavaScript递归操作实例浅析

 更新时间:2016年10月31日 11:51:07   作者:梁龙飞  
这篇文章主要介绍了JavaScript递归操作,由一个阶乘问题开始分析了递归操作的原理、实现方法与相关注意事项,需要的朋友可以参考下

本文实例分析了JavaScript递归操作。分享给大家供大家参考,具体如下:

问题

一个简单的递归,求n的阶乘:

function factorial(n){
  if (n<=1)
  {
    return 1;
  }else{
    return factorial(n-1)*n;
  }
}

如果像下面这样使用它,则会出错:

var fcopy = factorial;
factorial = null;
alert(fcopy(3));

因为fcopy指向的函数实体调用了factorial,而factorial已经被释放。

解决的办法

使用arguments.callee

执行流进入函数时会创建函数的运行环境(作用域链等),包括 arguments 这个特殊对象,arguments对象有个属性指向函数本身:arguments.callee 。

function factorial(n){
  if (n<=1)
  {
    return 1;
  }else{
    return arguments.callee(n-1)*n;
  }
}

不过callee在严格模式下不可用。

使用函数表达式

var factorial = (function f(n){
  if (n<=1)
  {
    return 1;
  }else{
    return f(n-1)*n;
  }
})

这并非使用了什么新的技术,只是在原来概念上的一种应用,在定义 factorial 时,直接创建一个函数,再将此函数的引用赋值给factorial。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript遍历算法与技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》及《JavaScript错误与调试技巧总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • ECharts入门教程

    ECharts入门教程

    ECharts 是一个使用JavaScript实现的开源可视化库,涵盖各行业图表,满足各种需求。这篇文章介绍了ECharts的基础知识,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 基于p5.js 2D图像接口的扩展(交互实现)

    基于p5.js 2D图像接口的扩展(交互实现)

    这篇文章主要为大家详细介绍了基于p5.js 2D图像接口的扩展,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • js实现简单扫雷

    js实现简单扫雷

    这篇文章主要为大家详细介绍了js实现简单扫雷,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • javaScript使用EL表达式的几种方式

    javaScript使用EL表达式的几种方式

    这篇文章主要介绍了javaScript如何使用EL表达式,有哪几种不错的方式,需要的朋友可以参考下
    2014-05-05
  • js执行字符串代码的具体实现

    js执行字符串代码的具体实现

    这篇文章主要给大家介绍了js执行字符串代码的具体实现,需要的朋友可以参考下
    2024-06-06
  • 12306验证码破解思路分享

    12306验证码破解思路分享

    本文给大家分享的是个人对于12306的新的验证码系统的破解思路,仅仅是思路,还没进行实地验证,推荐给大家,抛砖引玉吧。
    2015-03-03
  • JavaScript+html5 canvas实现本地截图教程

    JavaScript+html5 canvas实现本地截图教程

    这篇文章主要为大家详细介绍了JavaScript+html5 canvas实现本地截图教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • JavaScript实现忘记密码功能的示例代码

    JavaScript实现忘记密码功能的示例代码

    这篇文章主要为大家详细介绍了如何使用HTML、CSS和JavaScript实现一个完整的忘记密码功能,文中的示例代码讲解详细,需要的可以参考一下
    2024-01-01
  • .NET微信公众号开发之创建自定义菜单

    .NET微信公众号开发之创建自定义菜单

    这篇文章主要介绍了.NET微信公众号开发之创建自定义菜单的相关资料,需要的朋友可以参考下
    2015-07-07
  • Javascript表格翻页效果的具体实现

    Javascript表格翻页效果的具体实现

    表格翻页的实现方式有很多,下面以js为例为大家详细介绍下表格翻页效果的具体实现,感兴趣的朋友可不要错过
    2013-10-10

最新评论