所有 Tic Tac Toe 棋盘的可能性 - Stack Overflow - Java 递归一般树
All Tic Tac Toe Board Possibilities - Stack Overflow - Java Recursion General Trees
我正在尝试在 java.
中使用递归和树生成井字游戏中所有可能的动作
我正在使用我发现很难的通用树和递归。但是,树中的第一代应该填充1个点,然后下一代填充2个点,然后下一代填充3个点,然后下一代填充4个点,等等
我的目标是创建一个节点:
#
/
#-#-#-#-#-#-#-#-#
/ / / / / / / / /
(should be filled) #-#-#-#-#-#-#-#-#
每个 child 节点有 9 个兄弟节点。
每个兄弟姐妹都有 1/9 的可能位置。
'X' 或 'O' 交替放置在每一代新的 children 中(这 9 个位置中的 1 个)。
到最后一代,树应该被X和O填满了。
问题:我的 insertLayer 方法被无限递归调用。当我输入一个计数器来跟踪它的增长情况时,它卡在了 6-8 之间的某个地方。
此条件始终为真:
if (gameBoard[i][j] != 'X' || gameBoard[i][j] != 'O')
所以你会永远递归。
将||
改为&&
:
if (gameBoard[i][j] != 'X' && gameBoard[i][j] != 'O')
或更好,因为它更清晰、更简单:
if (gameBoard[i][j] != ' ')
注意:这可能不是您唯一的错误,但它是我注意到的最明显和最严重的错误。
我正在尝试在 java.
中使用递归和树生成井字游戏中所有可能的动作我正在使用我发现很难的通用树和递归。但是,树中的第一代应该填充1个点,然后下一代填充2个点,然后下一代填充3个点,然后下一代填充4个点,等等
我的目标是创建一个节点:
#
/
#-#-#-#-#-#-#-#-#
/ / / / / / / / /
(should be filled) #-#-#-#-#-#-#-#-#
每个 child 节点有 9 个兄弟节点。 每个兄弟姐妹都有 1/9 的可能位置。 'X' 或 'O' 交替放置在每一代新的 children 中(这 9 个位置中的 1 个)。 到最后一代,树应该被X和O填满了。
问题:我的 insertLayer 方法被无限递归调用。当我输入一个计数器来跟踪它的增长情况时,它卡在了 6-8 之间的某个地方。
此条件始终为真:
if (gameBoard[i][j] != 'X' || gameBoard[i][j] != 'O')
所以你会永远递归。
将||
改为&&
:
if (gameBoard[i][j] != 'X' && gameBoard[i][j] != 'O')
或更好,因为它更清晰、更简单:
if (gameBoard[i][j] != ' ')
注意:这可能不是您唯一的错误,但它是我注意到的最明显和最严重的错误。