当前位置:首页 > 日记 > 正文

JavaScript中递归实现的方法及其区别

JavaScript中递归实现的方法及其区别

递归函数:递归函数是在通过名字调用自身的情况下构成的。

递归实现阶乘函数:

方法一:通过使用函数的名字

 function factorial(num){    if(num<=1){      return 1;    }else{      return num*factorial(num-1);    }  }  console.log(factorial(4));

结果为:24;

但是这种方法实现递归有一个问题,观察以下代码:

function factorial(num){    if(num<=1){      return 1;    }else{      return num*factorial(num-1);    }  }  var anthorFactorial=factorial;  console.log(anthorFactorial(4));

结果为:24;

但是:

function factorial(num){    if(num<=1){      return 1;    }else{      return num*factorial(num-1);    }  }  var anthorFactorial=factorial;  factorial=null;  console.log(anthorFactorial(4));

结果为:报错

这是因为:

我们定义的函数名,其实是指向函数的一个指针,定义的anotherFactorial 也指向了那个函数,所以调用anotherFactorial (4)可以成功的输出24

当 factorial = null时,执行定义函数的引用就剩下了anotherFactorial,那么在调用anotherFactorial(4)就会显示以上的错误的信息。

此时可以使用arguments.callee来替代函数定义中的 factorial。

方法二:通过使用arguments.callee

function factorial(num){    if(num<=1){      return 1;    }else{      return num*arguments.callee(num-1);    }  }  var anthorFactorial=factorial;  factorial=null;  console.log(anthorFactorial(4));

结果为:24

arguments.callee是一个指向正在执行的函数的指针,因此可以用arguments.callee来实现对函数的递归调用。通过使用arguments.callee来代替函数名,可以保证在调用函数时无论怎样都不会出现问题。因此,在编写递归函数时,使用argumnts.callee总比使用函数名更加保险。
但是,在严格模式下,不能通过脚本访问arguments.callee,访问这个属性会报错,不过可以通过命名函数表达式来达到相同的效果。

方法三:通过命名函数表达式

 var factorial=function f(num){    if(num<=1){      return 1;    }else{      return num*f(num-1);    }  };  f=null;  console.log(factorial(4));

这种方式在严格和非严格模式下都有效。

总结

以上所述是小编给大家介绍的JavaScript中递归实现的方法及其区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

相关文章

ppt2013教程怎样将加载项插件删除

ppt2013教程怎样将加载项插件删除

方法,加载,插件,删除,教程,  小编曾经在PowerPoint2003添加了一个加载项,安装PowerPoint2013后,这个加载项总是提示错误信息,删除这个加载项后,打开PowerPoint2013还是提示有错误,这些问题总能让人头痛,怎么办?接下来小编举例简单的例子告诉大…

Word中进行设置不同页码的操作技巧

Word中进行设置不同页码的操作技巧

设置,操作技巧,页码,操作步骤,电脑软件,  发表论文的时候,想要摘要和正文使用不同的页码,想不到就这么一个简单的操作,主要是对于Word这个软件太过陌生,今天,小编就教大家在Word中进行设置不同页码的操作技巧。Word中进行设置不同页码的操作步…

word中如何添加花边word添加花边的

word中如何添加花边word添加花边的

步骤,方法,花边,电脑软件,word,  在编辑文档时经常都是白纸黑字,这样显得有点枯燥。比如我们写信时能加上花边就好看多了,给word文档加上花边之后可以使文档变得美观,更能吸引读者。那么下面就由小编给大家分享下word中添加花边的技巧,希望能…

excel 标准差公式的使用教程图解

excel 标准差公式的使用教程图解

标准差,使用教程,步骤,加载,公式,  在Excel把数据录入之后,为了让数据体现出差异性,会把数据的值求标准差,现在请阅读学习来小编整理的一些excel 标准差公式的使用方法的内容,希望对你有帮助!excel 标准差公式的使用教程excel 标准差公式的使…

Excel中进行利用rank函数计算名次

Excel中进行利用rank函数计算名次

函数,计算,操作方法,名次,操作步骤,  用Excel来制作表格,处理数据极其方便,相信大家都有所知,比如计算总和,排名,百分率。等等一些基本的处理。Excel中怎样利用rank函数来计算名次。今天,小编就教大家在Excel中进行利用rank函数计算名次的操作…

ppt制作透明文字效果的方法是什么

ppt制作透明文字效果的方法是什么

透明,方法,文字,文字效果,电脑软件,  ppt制作透明文字的方法,操作起来是很简单的,学会制作文字效果,制作不一样的PPT。以下是小编为您带来的关于ppt制作透明文字,希望对您有所帮助。ppt制作透明文字打开PPT软件,在&ldquo;插入&rdquo;选项卡中…

excel用函数计算房贷的方法excel怎

excel用函数计算房贷的方法excel怎

函数,计算,房贷,方法,电脑软件,  在使用Excel进行办公的时候,可能会有很多时候都需要用到函数计算房贷,或许会有朋友并不知道该如何使用函数,接下来是小编为大家带来的excel用函数计算房贷的方法,供大家参考。excel用函数计算房贷的方法用函…

excel表格的长数字输入的方法

excel表格的长数字输入的方法

方法,数字输入,表格,电脑软件,excel,  Excel表格里长数字该如何输入呢?下面是小编带来的关于excel表格的长数字输入的方法,希望阅读过后对你有所启发!excel表格的长数字输入的方法:  长数字输入步骤1:我们打开EXCEL软件,小编首先介绍在单元…

Excel中进行表格修改密码的设置技

Excel中进行表格修改密码的设置技

修改密码,设置,步骤,表格,技巧,  我们只希望别人浏览查看我们的表格,而不希望别人修改我们的excel表格,应该如何设置修改EXCEL表格的密码呢?今天,小编就教大家在Excel中进行表格修改密码的设置技巧。Excel中进行表格修改密码的设置步骤我们…

WPS文字中输入分数的方法是什么

WPS文字中输入分数的方法是什么

文字,方法,输入,分数,电脑软件,  在使用WPS文字写文档的时候,需要输入分数,这也是种常用到的操作方法。以下是小编为您带来的关于WPS文字中输入分数的方法,希望对您有所帮助。WPS文字中输入分数的方法方法步骤1、打开WPS后,同时按住&ldquo;Ct…

去掉word文字背景色的三种方法

去掉word文字背景色的三种方法

方法,背景色,文字,三种,电脑软件,  在网上,我们经常会看到很多word文件含有多种背景色,有时候可能会影响我们的视觉效果,那么这时我们就会想到要先去除掉文件里的背景色,然后再浏览。那么下面就由小编给大家分享下去掉word文字背景色的技巧,希…

如何设置QQ密保qq号怎么设置密保

如何设置QQ密保qq号怎么设置密保

设置,方法,加密,空间,如何设置,  QQ密保是保护QQ账号密码的一个功能,那怎么设置QQ密保呢?今天就由小编教大家解决怎么设置密保这个问题!希望可以帮到大家!设置QQ密保的方法1、登陆QQ,点击面板下方的主菜单,在弹出的窗口中找到&ldquo;安全中…