美文网首页
JavaScript 之递归问题的解决

JavaScript 之递归问题的解决

作者: 闲闲呢 | 来源:发表于2016-05-16 15:45 被阅读0次

递归:

递归函数在定义的时候需要调用自己,因此会用到自己的函数名;但是在js中会出现如下的问题:
<pre>
function factorial(num) {
if (num <= 1)
return 1;
else
return num * factorial(num - 1);
}
var anotherFactorial = factorial;
factorial = null;
anotherFactorial(6);
//由于迭代过程中需要用到factorial,但该值已被赋值为空,所以会出错
</pre>

解决方法:有两种方式可以解决该问题
1.使用 arguments.callee:
该参数指向一个正在执行的函数的指针,因此可以用它来实现函数对自身的递归调用。
<pre>
function factorial(num) {
if (num <= 1)
return 1;
else
return num * arguments.callee(num - 1);
}
var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial(6));
</pre>
这种写法之下,即便factorial被赋值为空,依然可以引用自身来实现递归。
2.使用命名函数表达式
但是在严格模式之下,不可以访问arguments.callee属性,因此可以使用命名函数表达式:
<pre>
eg:var factorial = (function f(num) {
if (num <= 1)
return 1;
else
return num * f(num - 1);});
</pre>

相关文章

  • JavaScript 之递归问题的解决

    递归: 递归函数在定义的时候需要调用自己,因此会用到自己的函数名;但是在js中会出现如下的问题: function...

  • 前端开发 -- 算法模式(递归和动态规划)

    递归 递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题,递归通常涉及到函数的自身调用。递归函...

  • JavaScript 函数式编程 - 蹦床,递归优化

    Trampoline 解决 Blowing the stack JavaScript 引擎没有对递归调用优化。因此...

  • 学习递归

    1. 递归 1.1 理解递归 ​ 递归是一种解决问题的方法,它从解决问题的各个小部分中开始,直到解决最...

  • 递归2--表达式求值

    用递归解决递归形式的问题: 表达式的定义是递归的:

  • 数据结构之理解递归

    理解递归 要理解递归, 首先要理解递归 --佚名 递归是一种解决问题的方法, 他从解决问题的各个小部分开始, 知道...

  • JavaScript之递归

    递归基础 什么是递归?在JavaScript程序中,函数直接或间接调用自己。通过某个条件判断跳出结构,得出结果。递...

  • 递归算法

    递归是解决问题最常用的方法,比如,解决二叉树问题,最容易想到的就是递归算法,首先处理根结点,然后递归处理左右子树。...

  • 动态规划&贪心算法

    动态规划问题,问题可以分为子问题的最优解,从而递归下去。也可以自下而上的循环来解决,就是找到递归的终点,从递归的终...

  • 第二章 递归和回溯

    递归 递归的含义:任何调用自身的函数称为递归。用递归求解问题要点在于递归函数调用自身取解决一个规模比原始问题小一些...

网友评论

      本文标题:JavaScript 之递归问题的解决

      本文链接:https://www.haomeiwen.com/subject/etpbrttx.html