今天在做一个递归函数时,突然控制台给我报了一个Maximum call stack size exceeded这样的错误,我很纳闷,思路很正确,但是为什么会报这样的错误呢。
我们今天就聊聊这个错是怎么产生的:
这个错误的中文意思就是“最大堆栈超过了最大值”,一般这种错误也是在递归函数当中出现。
如果我们要解决问题,那就需要明白错误产生的原因。
我们先看一个简单的,也能最清楚明白这个问题出现的函数:
function a() {
a();
}
只要一运行这个函数,就会直接报上面的那个错误。
由这个简单的例子,我们就很清楚看出来原因:这就是因为一个函数一直递归调用自己,无法停止,只有在内存被塞满(内存溢出)的时候,报错才能够停止。
所以,有这个报错的小朋友,一定要看一下自己递归的时候,是不是条件判断有错误,博主就是因为判断条件问题,导致一直循环递归无法停止,才报错的。