Javascript递归函数性能下降

ben*_*888 9 javascript recursion performance

在招聘过程技能测试期间,我遇到了以下问题:

var x = function(z) {
    console.log(z);    
    if (z > 0) {
        x(z-1);
    }
};
Run Code Online (Sandbox Code Playgroud)

为什么随着z变高,这会逐渐变慢?提出一个更好的版本,保持递归.

我想知道答案只是为了了解它.我回答说它变慢了,因为随着z的增加,递归调用的数量也增加了,但我无法提供更好的版本.另外,我不知道为什么当z越高时函数变慢的原因还有什么.

小智 11

正确的答案是," 随着z越来越高,它应该逐渐变慢".事实上,它并不在我的简单测试中.在任何减速可见之前,我的测试会溢出堆栈.

我无法想象在保持其递归性质的同时编写函数的任何替代方法.