js中递归函数的使用介绍_javascript技巧_脚本之家

上边大家就做一个10以内的阶乘试试看吗:

[Ctrl+A 全选
注:如需引进外界Js需刷新技术实施]递归函数的调用就说那样多了
js递归函数调用自个儿时的管教措施。 来自js高端程序设计
四个标准阶乘递归函数: 复制代码 代码如下:
function fact{ return 1; }else{ return num*fact; } }
以下代码可形成出错: var anotherFact = fact; fact = null; alert; //出错
由于fact已经不是函数了,所以出错。
用arguments.callee可解除难点,那是叁个指向性正在实行的函数的指针。
新的函数为: 复制代码 代码如下: function
fact{ return 1; }else{ return num*arguments.callee; //此处改善了。 } }
var anotherFact = fact; fact = null; alert; //结果为24.
JS普通递归的更改
递归函数是在二个函数通过名字调用自个儿的情事下结合的,如下所示: 复制代码 代码如下: function factorial { return
1; } else { return num *www.6766.com, factorial; } }
那是三个经文的阶乘函数。表面看来未有怎么难题,但上边包车型地铁代码却也许诱致它出错。
var anotherFactorial = factorial; anotherFactorial; //输出 24 factorial
= null; anotherFactorial ; //TypeError: Property ‘factorial’ of object
[object Window] is not a function chrome 下测量检验原因在于,大家定义的函数名,其实是指向函数的贰个指针,这时候定义了anotherFactorial
也本着了十三分函数,所以调用anotherFactorial 可以成功的输出24 那时候factorial = null;
那么推行定义函数的引用就剩下了anotherFactorial,那么在调用anotherFactorial就博览会示以上的不当的新闻。
那时候能够使用arguments.callee来代替函数定义中的 factorial,
函数的定义就改成了: 复制代码 代码如下:
function factorial { return 1; } else { return num * arguments.callee;
} } 那么在选取方面包车型大巴4行测验代码,末了生机勃勃行测量检验代码也得以成功的出口24.
————————————– 上述的从头到尾的经过摘自<>第2版 144页
7.1节

js中递归函数的利用

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图