我如何强制node.js做更深的recursion?

我有一个memoizedrecursionalgorithmf(n)

当我运行f(1000)一切正常,它需要不到一分钟的时间运行。

当我运行f(10000)我得到一个范围错误/最大调用堆栈大小超过。

我不相信这个错误与我的algorithm(这是归因于多项式)的效率有什么关系,似乎更像是一个configuration。

我试着做node app.js --stack-size=32000 ,并没有使错误消失。 我以为10X目前的堆栈大小就足够了。 这个堆栈大小是否可能太小,或者是否有办法在节点中强制/设置一个configuration来处理n = 10000情况?

此外, – 堆栈大小选项似乎没有做任何事情…我减less到“1”,我的程序运行速度一样快。

看起来好像Node要求它的启动标志放在执行文件名之前。

 node --stack-size=32000 app.js 

只是在这里2便士提示:

如果你的应用程序抛出堆栈溢出错误,意味着你正在做的事情太大了,inheritance了太多的范围。

考虑将login划分为asynchronous函数,这样它就可以在不同的上下文中执行调用,并且可以防止堆栈溢出exception的问题,并允许应用程序跨整个逻辑共享计算资源,而不是自私地在一个函数中使用它实际上是一个瓶颈。