В настоящее время я работаю над проблемами в Project Euler с помощью JavaScript. По большей части я использовал циклы for
для повторения проблем, но хотел использовать рекурсивные функции. Однако кажется, что все движки JavaScript имеют ограничения на объем рекурсии, которую они могут обработать.
Я скомпилировал/установил SpiderMonkey, чтобы попытаться запустить его из оболочки, но все равно получаю 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
, и он работает в течение нескольких секунд... любой язык, который не выполняет оптимизацию хвостового вызова, сломался бы при решении проблемы такого размера. - person Thomas   schedule 21.01.2010