2013-06-02 97 views
1

我寫了一個二十一點腳本,我想遞歸迭代,直到一個相當大的資金用完。我想對遙測進行分析。這是一個本地生活的腳本,除了我正在運行的瀏覽器環境外,沒有其他任何危險。調用堆棧增加javascript

本質上,腳本是假設是遞歸的,直到現金用完。它工作正常,大約5K分開的手等左右 - 爲10k的資金,然後它拋出最大調用堆棧錯誤。但是,我需要更多的數據。像> 100k手。

我已經搜索過SO的解決方案,我收集它是一個瀏覽器的具體事情。任何想法將不勝感激!

代碼片段附:

function main() { 
init(); 
if (bankRoll >= initialBet) { 
    determineBet(); 
} 
else { 
    alert("Not enough moneyz to play!"); 
    console.log("telemetry"); 
    exitFunction(); 
} 
bankRoll -= initialBet; 
playTheGame(); // the whole game, betting, receiving cards, strategy etc 
} 
+0

它是否必須遞歸?也許你可以改寫它來使用堆棧。 –

+0

你能發佈一個有遞歸邏輯的代碼片段嗎? – Vadim

+0

@FelixKling好主意;因爲我剛剛開始編程,所以不知道該怎麼做。首先寫下游戲,然後決定使用它來測試基本的bj策略。 – MerynDH

回答

1

我建議你使用一個循環:

function main() { 
    init(); 
    while (bankRoll >= initialBet) { 
     determineBet(); 
     bankRoll -= initialBet; 
     playTheGame(); // the whole game, betting, receiving cards, strategy etc 
    } 
    alert("Not enough moneyz to play!"); 
    console.log("telemetry"); 
    exitFunction(); 
} 

這很難說,如果我重構它正確,因爲我不知道有什麼功能,如playTheGamedetermineBet做,但我希望你明白這個主意。

+0

這會在相同幅度的手(> 5k)附近返回相同的錯誤。 playTheGame()函數包含大部分函數,​​這些函數並不複雜,但我認爲我可能需要了解很多有關編碼的內容。 – MerynDH

+0

那麼,何時何地調用'main'函數? – basilikum

+0

它在html腳本元素和函數中調用手完成後重新啓動遊戲。反過來,該功能被確定結果的評估函數所調用。 – MerynDH