JS中的递归有没有深度限制

JavaScript023

JS中的递归有没有深度限制,第1张

为了保证n次调用中this一致。

假设你首次调用是这样的:

flexisum(...)

那么n次递归中,this都是window(或undefined)。

假设你首次调用是这样的:

sth.flexisum(...)

flexisum.call(sth, ...)

那么n次递归中,this都是sth。

首先先解释一下什么是递归函数:什么是递归方法:就是一个方法,自己调用自己

但是一定要注意控制好合适的跳出,不然就会死循环,如图:

所以我们平时一定要注意,递归函数里调用函数本身的时候一定要要合理的控制循环跳出的语句;比如我们来看一题很经典的面试题,请用递归方法算出1-20之间每个数的和

 function calc(num){

            //这个if是退出递归的条件

            if(num===1) {    //如果没有这个if条件

                return num

            }

            return num + calc(num-1)  //

        }

console.log(calc(3))  //这里为了方便我们理解我们可以先用num===3替代进去,具体的方式以及步骤分解可以看图:

如果有大佬有更好的理解方法,可以留言或者私信哦,互相学习,互相进步~~~