2013-06-02 2 views
1

Я написал сценарий блэкджека, который я хотел бы повторить рекурсивно, пока не закончится довольно большой банкролл. Я бы хотел провести анализы по телеметрии. Это сценарий, который живет локально и не представляет никакой опасности для чего-либо, кроме среды браузера, в которой я его запускаю.увеличение стека вызовов javascript

По существу, сценарий предположительно должен быть рекурсивным, пока наличные деньги не исчерпываются. Он отлично работает примерно до 5 тыс. Отдельных рук или около того - для банковских счетов до 10 тыс., А затем он выдает максимальную ошибку стека вызовов. Однако мне нужно больше данных; как> 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(); 
} 

Трудно сказать, если я реструктурировать это правильно, так как я не знаю, какие функции, как playTheGame или determineBet но я надеюсь, что у вас есть идея.

+0

Это возвращает ту же ошибку при одинаковой величине рук (> 5k). Функция playTheGame() содержит основную часть функций, которая не * * сложна, но я думаю, что мне, вероятно, очень много узнать о кодировании. – MerynDH

+0

Ну, где и когда называется функция 'main'? – basilikum

+0

Он вызывается в элементе html-скрипта и в функции, которая управляет перезапуском игры после того, как рука заканчивается. Эта функция, в свою очередь, вызывается оценочными функциями, которые определяют результат. – MerynDH