当前位置:酷酷问答>生活百科>JS实现递归的3种方法

JS实现递归的3种方法

2024-12-05 03:10:26 编辑:zane 浏览量:511

JS实现递归的3种方法

的有关信息介绍如下:

JS实现递归的3种方法

js函数的递归调用方法

1.通过函数自身名字递归调用

function sum(num){ if(num<=1){ return 1; }else{ return num+sum(num-1); }}

这种通过函数名字调用自身的方式存在一个问题:函数的名字是一个指向函数对象的指针,如果我们把函数的名字与函数对象本身的指向关系断开,这种方式运行时将出现错误。

2.通过arguments.callee调用函数自身

function sum(num){ if(num<=1){ return 1; }else{ return num+arguments.callee(num-1); }}console.log(sum(5));//15var sumAnother=sum;console.log(sumAnother(5));//15sum=null;console.log(sumAnother(5));//15

这种方式很好的解决了函数名指向变更时导致递归调用时找不到自身的问题。但是这种方式也不是很完美,因为在严格模式下是禁止使用arguments.callee的。

3.通过函数命名表达式来实现arguments.callee的效果。

var sum=(function(){ 'use strict' return function fun(num){ if(num<=1){ return 1; }else{ return num+fun(num-1); } }})()console.log(sum(5));//15var sumAnother=sum;console.log(sumAnother(5));//15sum=null;console.log(sumAnother(5));//15

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/life/152612.html
热门文章