我正在用 Java 为游戏编写一个极小极大算法,并且为了提高速度,在我递归地处理决策树时改变游戏状态。但是,这涉及修改我正在迭代的移动列表。
public int minimax(int currentDepth) {
    if (currentDepth == depth || board.legalMoves.isEmpty()) {
        int eval = board.eval();
        board.takeBack(1);
        return eval;
    }
    int x = Integer.MIN_VALUE;
    for (Tuple move : board.legalMoves) {
        board.move(move);
        x = max(x, -1*minimax(currentDepth+1));
        board.takeBack(1);
    }
    return x
}
该board.move()方法会改变ArrayList legalMoves,但takeBack(1)会将其恢复到原始状态。这会导致任何问题吗?