设为首页 加入收藏

TOP

如何使用JavaScript书写递归函数
2015-02-02 14:22:10 来源: 作者: 【 】 浏览:7
Tags:如何 使用 JavaScript 书写 函数

递归函数大家都应该比较熟吧?那么,如何在java script中书写一个完美的递归函数呢?且听我娓娓道来。


写的时候,查了一下维基百科对递归函数的定义,恕我愚钝,简直太深奥了!所以,我还是简单的说说我对递归函数的理解吧。递归函数,说白了就是在函数内部引用函数自身,最终到给定的递归结束条件时回溯。当然,你也可以不给定结束条件,死了别挂我~(╯﹏╰)~


现在,一步一步,摩擦摩擦,在皎洁的编辑器上,来开始使用java script写递归函数吧!


好了,不错,一个堪称经典的递归求阶乘的函数诞生了。事情肯定不会这么顺利,一定是个圈套。我们来如下调用以下看看会怎么样?


呵呵,居然报错了


嗯,报了类型错误。。。


回过头去看看我们是如何调用的。发现问题了吧!我们把fun赋给了test,然后把fun给回收掉了。为什么会出错呢?因为像function这种赋值其实是引用传递,只是把指向函数的指针(这里说地址也行)赋给test了。但我们把fun赋值为null的时候,函数都已经被回收了,拿什么来执行?知道问题所在了,我决定换种方式来定义:


然后测试一下:


OK,测试通过!


但是在某一天,当我实际码代码的时候,问题又出现了。什么问题呢?我们来看一下:


╮(╯▽╰)╭哎!可怜啊!因为我使用了"use strict"!严格模式下是不允许的。。。


好吧!继续想办法!既然不能使用arguments.callee(),那还是想想其他的方式吧。


看下面的代码:


然后我测试了以下,神奇的通过了,暂时没有发现任何问题!


为什么呢?因为我们使用了“()”,巧妙地使用命名函数表达式来达到了同样的效果。


?


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇AngularJS - 快速入门 下一篇OpenGL 基础图形绘制与投影变换

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: