private double recursiveMiniMaxAlphaBeta( TwoPlayerGameBoard currentProblem, int currentLevel, double alpha, double beta) { if (!currentProblem.hasMoreChildren() || currentLevel == maxLevel) { return currentProblem.staticEvaluation(); } double result = 0; if (currentLevel % 2 == 1) { while (currentProblem.hasMoreChildren() && alpha < beta) { result = recursiveMiniMaxAlphaBeta(currentProblem.nextChild(), currentLevel + 1, alpha, beta); if (result < beta) beta = result; } } else { while (currentProblem.hasMoreChildren() && alpha < beta) { result = recursiveMiniMaxAlphaBeta(currentProblem.nextChild(), currentLevel + 1, alpha, beta); if (result > alpha) alpha = result; } } return result; }