我有一个回忆录递归算法f(n)
当我运行f(1000)
时,一切都正常,运行不到一分钟。
当我运行f(10000)
时,会得到超过范围错误/最大调用堆栈大小的结果。
我不认为这个错误与我的算法的效率有任何关系(这是由于回忆录而产生的多项式),而且似乎更像是配置问题。
我试着做node app.js --stack-size=32000
,但这并没有使错误消失。我认为10倍的当前堆栈大小就足够了。该堆栈大小是否可能太小,还是有一种方法强制/设置节点中的配置来处理n = 10000
情况?
而且-堆栈大小选项似乎什么也不做.我把它缩小到"1“,我的程序运行得也一样快。
发布于 2014-01-06 07:46:33
似乎Node要求在执行文件名之前放置其启动标志。
node --stack-size=32000 app.js
发布于 2014-01-06 01:57:28
这里只要一个2美分的小费:
如果应用程序向您抛出堆栈溢出错误,则意味着您一次做的事情太大,继承了太多的作用域。
考虑将登录划分为异步函数,这样它就可以在单独的上下文中执行调用,从而防止堆栈溢出异常问题,并允许应用程序跨整个逻辑共享计算资源,而不是自私地将其用于一个实际上是瓶颈的函数中。
https://stackoverflow.com/questions/20941928
复制