【发布时间】:2010-01-20 21:09:29
【问题描述】:
我目前正在使用 JavaScript 解决 Project Euler 中的问题。在大多数情况下,我一直在使用for 循环来遍历问题,但想使用递归函数。但是,似乎所有 JavaScript 引擎都对它们可以处理的递归量有所限制。
我编译/安装了SpiderMonkey 以尝试从shell 运行,但仍然得到18: InternalError: too much recursion
有没有办法增加 SpiderMonkey 中的递归限制,或者这只是一个坏主意。
代码示例:
function cycle(x)
{
if (check_divisble(x))
{
print(i + ' is divisble by 1 - 20' + '\n');
return;
}
x+=20;
cycle(x);
}
cycle(50400);
感谢您的帮助。
【问题讨论】:
-
为什么你甚至想用递归来做这件事?我用
for循环尝试了这个,它运行了几秒钟......任何不进行尾调用优化的语言都会在这种规模的问题上中断。 -
嗨,Thomas - 我确实是用 for 循环完成的。我只是好奇是否可以通过递归来做到这一点,因为在其他一些问题上,更容易停止/捕获/修改函数中的计算。
标签: javascript recursion spidermonkey