javascript 为什么这个递归程序内存不足?

2guxujil  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(139)

我有下面的递归程序,它被调用时返回类型为void。内存中保存了什么导致堆栈溢出错误?

main();

function main() {
  neverEnd();
}

function neverEnd() {
  console.log("never end");
  neverEnd();
}
hujrc8aj

hujrc8aj1#

该程序通过递归调用neverEnd()函数而没有任何退出条件来创建无限循环。每次调用该函数时,都会创建一个新的堆栈帧来存储函数调用及其局部变量。然而,由于该函数永远不会返回,因此堆栈帧会在堆栈上不断堆积,直到系统耗尽堆栈内存并引发堆栈溢出错误。
总之,无限递归导致程序在内存中保持不断增加的堆栈帧数量,这导致堆栈溢出错误。

相关问题