Mik*_*den 18 javascript recursion
我知道你在JavaScript中对函数进行递归调用时应该轻率一点,因为你的第二次调用可能会慢10倍.
有一个重要问题:在大多数JavaScript实现中,第二个版本比第一个版本慢大约10倍.在JavaScript中,运行简单循环比多次调用函数要便宜得多.
John Resig甚至说这是这篇文章中的一个问题.
我的问题是:为什么使用递归这么低效?它只是特定引擎的构建方式吗?我们是否会在JavaScript中看到时间不是这样的?
Chu*_*uck 11
由于更改堆栈和设置新上下文等所有开销,函数调用比简单循环更昂贵.为了使递归非常有效,语言必须支持某种形式的尾部调用消除,这基本上意味着将某些类型的递归函数转换为循环.像OCaml,Haskell和Scheme这样的函数式语言就是这样做的,但是我所知道的JavaScript实现没有这样做(除非他们都这样做,否则它只会有一点点用处,所以也许我们有一个餐饮哲学家的问题).