最大递归错误python扑克游戏

时间:2017-01-12 19:55:09

标签: python recursion

我在python中制作一个简单的扑克游戏。在进行下注轮次时,我得到最大递归深度误差,而且我不太确定如何修复它。我之前使用过该版本的代码时遇到过这个问题,但我现在将下注轮分为两半(一个用于人类,另一个用于Ai)。我已经尝试了所有我能想到的修复和堆栈溢出,但仍然没用。

以下是代码:

@Html.TextBoxFor(m=>m.CARET

此处的完整代码:http://pastebin.com/sdfwWjsg

这是最后一个工作版本:http:// pastebin.com/35gapWNi

以下是错误代码:

@Html.TextBoxFor(m=>m.Invoice_Details.CARET

此处的完整错误代码:http://pastebin.com/52CH0AvL

我认为它与代码有关,而不是在它应该做的时候突破循环,但我找不到它不在的任何地方。

1 个答案:

答案 0 :(得分:0)

http://pastebin.com/sdfwWjsg查看代码的第156-162行和第178-180行:

156 def playGame():
157         startPlayer = bettingRoundOrder()
158         human.money = human.money - Table.entrymoney
159         ai.money = ai.money - Table.entrymoney
160         Table.pot = (Table.pot + 2*Table.entrymoney)
161 
162         if bettingRound() == False:


178 def bettingRound():
179         won = False
180         if playGame().startPlayer == 1:

这些片段包含错误消息中重复提及的行180和162。现在让我们看看当第156行的playGame()函数被调用时会发生什么:第157-160行设置了一些变量,第162行调用bettingRound()。现在我们在178行,第179行设置变量,第180行调用playGame(),所以我们回到156,这是无限循环。

我没有调查你的其余代码,所以我无法修复错误。

另一句话:如果你想做playGame().startPlayer之类的事情,那么playGame()函数必须返回一个具有startPlayer成员的对象。 Table.winner(它是一个字符串或None)和cardCompare()(它是一个字符串)的结果都不起作用。 <{1}}函数中的某个startPlayer变量是不够的。