0

我需要使用 JavaScript 执行一些递归操作。

JavaScript 引擎是否像 Java 一样工作?对于递归,Java 在每次递归调用时都会启动一个新堆栈。JavaScript 如何处理这个问题?

4

2 回答 2

4

ECMAscript没有尾部优化的概念......但是,如果那是问题吗?

尾部优化是什么意思?

这意味着在递归调用时不再需要堆栈帧,因此可能会被消除

这反过来意味着,由于没有关于该主题的官方规范,因此很大程度上取决于解释器如何处理这个问题。可能有一些优化在幕后进行(V8?),但最好假设 JS 递归根本没有得到优化。

于 2013-06-18T10:31:29.953 回答
1

是的,每个递归调用都会创建一个新的堆栈条目

于 2013-06-18T10:33:38.080 回答