如何强制node.js进行更深入的递归?

时间:2014-01-06 02:20:48

标签: javascript algorithm node.js recursion

我有一个 memoized 递归算法f(n)

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

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

我不相信这个错误与我的算法的效率有关(由于记忆而是多项式),而且似乎更像是配置事物。

我尝试了node app.js --stack-size=32000并且没有让错误消失。我认为当前的堆栈大小足以满足10倍。该堆栈大小是否可能太小,或者是否有办法在节点中强制/设置配置来处理n = 10000情况?

同样,--stack-size选项似乎没有做任何事情......我把它减少到“1”并且我的程序运行速度一样快。

2 个答案:

答案 0 :(得分:2)

看起来Node需要将其启动标志放在正在执行的文件名之前。

node --stack-size=32000 app.js

答案 1 :(得分:0)

这里只有2便士提示:

如果你的应用程序抛出堆栈溢出错误,意味着你要一次性做太大的事情,继承太多的范围。

考虑将登录分成异步函数,这样它就可以在单独的上下文中执行调用,并且可以防止堆栈溢出异常问题,并且允许应用程序在整个逻辑中共享计算资源,而不是自私地使用它一个实际上是瓶颈的功能。