<p>我正在尝试生成完整的游戏树井字游戏。我假设玩家1为1,玩家2为-1。我使用了以下代码:</p>
<pre><code>nodeDict = {}
nodescore = {}
succDict = {}
def buildTree(S, p, node):
succ = []
succScore = []
if move_was_winning_move(S, p):
print "It is a winning move for\n",S,p,node
return
elif move_was_winning_move(S, p*-1):
print "It is a winning move for\n",S,p*-1,node
return
elif not move_still_possible(S):
return
# if S is not terminal: switch player & compute successors
if not move_was_winning_move(S, p):
rs, cs = np.where(S==0)
for j in range(rs.size):
Ssucc = np.copy(S)
Ssucc[rs[j],cs[j]] = p
newnode = max(nodeDict.keys())+1
nodeDict[newnode] = Ssucc
succ.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(newnode)
succDict[node] = succ
nextPlayer = p * (-1)
for s in succ:
buildTree(nodeDict[s], nextPlayer, s)
return
</code></pre>
<p>当我从一个状态启动代码时:</p>
^{pr2}$
<p>它跑得太长了。我发现,最多应该有9个!节点数,应该不会太长。在</p>
<p>有人能告诉我密码有没有错?或者有什么方法可以优化递归呢?在</p>