所有 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] != ' ')

注意:这可能不是您唯一的错误,但它是我注意到的最明显和最严重的错误。