当前位置: 首页 > 编程笔记 >

JavaScript递归操作实例浅析

梁祯
2023-03-14
本文向大家介绍JavaScript递归操作实例浅析,包括了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程序设计有所帮助。

 类似资料:
  • 本文向大家介绍JavaScript函数重载操作实例浅析,包括了JavaScript函数重载操作实例浅析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript函数重载操作。分享给大家供大家参考,具体如下: 上个星期四下午,接到了网易的视频面试(前端实习生第二轮技术面试)。面了一个多小时,自我感觉面试得很糟糕的,因为问到的很多问题都很难,根本回答不上来。不过那天晚上,还是很惊喜的

  • 拜托,我需要你的帮助。我花了几个小时试图找出这些函数中的问题。我的老师想让我用一个递归运算给定2个数字。问题是,每次我启动程序并初始化函数时,都会出现这个错误。“RecursionError:调用Python对象时超过了最大递归深度”我没有使用位号,而是使用了StackOverflow中关于同一参数的其他答案中的代码。所以我想我真的没有掌握这个问题的概念: 如果用户在主菜单输入“1”:应该提示用户

  • 本文向大家介绍JavaScript中Cookie操作实例,包括了JavaScript中Cookie操作实例的使用技巧和注意事项,需要的朋友参考一下 JavaScript Cookie   Cookie对象:   Cookie是一种以文件的形式保存在客户端硬盘的Cookies文件夹中的用户数据信息(Cookie数据)。   Cookie文件由所访问的Web站点建立,以长久的保存客户端与Web站点间的

  • 本文向大家介绍浅析javascript操作 cookie对象,包括了浅析javascript操作 cookie对象的使用技巧和注意事项,需要的朋友参考一下 Cookie 对象 是一种以文件(Cookie文件)的形式保存在客户端硬盘的Cookies文件夹中的数据信息(Cookie数据)。Cookie文件夹中的用户数据信息(Cookie数据)。Cookie文件由所访问的Web站点建立,以长久的保存客户

  • 本文向大家介绍Javascript 实现匿名递归的实例代码,包括了Javascript 实现匿名递归的实例代码的使用技巧和注意事项,需要的朋友参考一下 递归是一种常见的编程技巧,实名递归相信大家都不陌生,但如果想要实现匿名递归呢?比如想要返回一个匿名递归函数,又或者是定义一个匿名递归函数并直接调用它,该怎样去做呢?本文将来探讨一下它的实现。 实名递归 我们还是先从实名递归说起吧,还是用那个最简单的

  • 本文向大家介绍javascript Deferred和递归次数限制实例,包括了javascript Deferred和递归次数限制实例的使用技巧和注意事项,需要的朋友参考一下 你知道Deferred和递归次数限制吗?下面有个不错的实例,大家可以看看