我目前正在對Project Euler使用JavaScript的問題。大多數情況下,我一直在使用for
循環來遍歷問題,但希望使用遞歸函數。但是,似乎所有的JavaScript引擎對它們可以處理的遞歸量都有限制。是否有可能增加SpiderMonkey中的遞歸限制?
我編譯/安裝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'循環試了這個,並且它運行了幾秒鐘......任何不執行tail-call優化的語言都會在這個大小的問題上崩潰。 – Thomas 2010-01-20 21:15:58
嗨托馬斯 - 我做了一個for循環。我只是好奇,如果有可能使用遞歸做到這一點,因爲在一些其他的問題也就更容易停止/捕獲/修改函數中的計算。 – 2010-01-20 21:51:57