调用堆栈增加javascript
我已经写了一个21点脚本,我想递归迭代,直到一个相当大的资金用完。我想对遥测数据进行分析。它是一个本地脚本,除了运行它的浏览器环境之外,不会对任何东西造成危险 本质上,脚本应该是递归的,直到现金用完为止。它可以在大约5k左右的分手操作中正常工作——对于10k以下的银行存款,然后抛出max call stack错误。然而,我需要更多的数据;比如超过10万只手 我一直在寻找解决方案,我想这是一个特定于浏览器的问题。任何想法都将不胜感激 附加代码段:调用堆栈增加javascript,javascript,callstack,Javascript,Callstack,我已经写了一个21点脚本,我想递归迭代,直到一个相当大的资金用完。我想对遥测数据进行分析。它是一个本地脚本,除了运行它的浏览器环境之外,不会对任何东西造成危险 本质上,脚本应该是递归的,直到现金用完为止。它可以在大约5k左右的分手操作中正常工作——对于10k以下的银行存款,然后抛出max call stack错误。然而,我需要更多的数据;比如超过10万只手 我一直在寻找解决方案,我想这是一个特定于浏览器的问题。任何想法都将不胜感激 附加代码段: function main() { init();
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
}
我建议您使用循环:
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
或determinatebet
这样的函数有什么作用,但我希望你能理解。我建议你使用循环:
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
或determinitebet
这样的函数有什么作用,但我希望你能理解。它必须是递归的吗?也许你可以重写它来使用堆栈。你能发布一个具有递归逻辑的代码片段吗?@FelixKling不错的主意;我不知道该怎么做,因为我上周才开始编程。首先编写了游戏,然后决定用它来测试基本的bj策略。你能发布你得到的错误吗?@Jacob Amerz:“超过了最大调用堆栈大小”它必须是递归的吗?也许你可以重写它来使用堆栈。你能发布一个具有递归逻辑的代码片段吗?@FelixKling不错的主意;我不知道该怎么做,因为我上周才开始编程。首先编写了游戏,然后决定用它来测试基本的bj策略。你能发布你得到的错误吗?@Jacob Amerz:“超过了最大调用堆栈大小”这会在大约相同的手数(>5k)下返回相同的错误。playTheGame()函数包含了大部分函数,虽然没有那么复杂,但我想我可能还有很多关于高效编码的知识需要学习。那么,main
函数在何时何地被调用?它在html脚本元素中被调用,并在控制手动完成后重新启动游戏的函数中被调用。该函数依次由确定结果的求值函数调用。好的,目标应该是将所有内容都放在while循环中。处理和评估的完整逻辑应该在这里,这样您就不需要递归调用main
函数,而只需在启动时调用它一次。谢谢!我从循环函数中删除了main()函数调用,现在它不再给我带来任何麻烦了!少就是多…这会在手的大小相同(>5k)时返回相同的错误。playTheGame()函数包含了大部分函数,虽然没有那么复杂,但我想我可能还有很多关于高效编码的知识需要学习。那么,main
函数在何时何地被调用?它在html脚本元素中被调用,并在控制手动完成后重新启动游戏的函数中被调用。该函数依次由确定结果的求值函数调用。好的,目标应该是将所有内容都放在while循环中。处理和评估的完整逻辑应该在这里,这样您就不需要递归调用main
函数,而只需在启动时调用它一次。谢谢!我从循环函数中删除了main()函数调用,现在它不再给我带来任何麻烦了!少当然是多。。。