这是我要为井字游戏编写的minimax函数的一部分。具体来说,这是max播放器调用的“ maxi”功能的一部分,该功能调用mini,调用maxi等。程序无法找到最佳的播放方式。当我运行调试器时,有时它会遍历整个for循环,而有时,在第三行调用mini之后,它会无缘无故返回第一行。我错过了一些语法原因吗?
for i in acts:
res = result(board, i)
minboard = mini(res, alpha, beta)
if utility(minboard) > maxv:
maxv = utility(minboard)
x = i
if maxv > alpha:
alpha = maxv
if beta <= alpha:
break
答案 0 :(得分:0)
我不完全了解mini和Utility函数的工作方式,但是我的直觉是循环会停止,因为如果您的条件不满足,循环就不会停止。如果不是,则通常的结构是if,否则不是3个if语句。
for i in acts:
res = result(board, i)
minboard = mini(res, alpha, beta)
if utility(minboard) > maxv:
maxv = utility(minboard)
x = i
elif maxv > alpha:
alpha = maxv
else:
break