Tic-Tac-Toe AI с использованием алгоритма Minimax выдает ошибку переполнения стека Java - PullRequest
0 голосов
/ 09 мая 2018

Вот мой код:

private int minvalue(char [] brd){

    int m = (int) Integer.MAX_VALUE;
    int v;
    ArrayList<Integer> action = actions(brd);

    for(int i = 0; i < action.size(); i++){
        int a = action.get(i);
        char [] nextbrd = result(brd, a, human);
        if(status(nextbrd)=='C') 
            v = maxvalue(nextbrd);
        else
            v = utility(nextbrd); 
        m = Math.min(v, m);
    }
    return m;     
}

private int maxvalue(char [] brd){
    int m = (int) Integer.MIN_VALUE;
    int v;
    ArrayList<Integer> action = actions(brd);

    for(int i = 0; i < action.size(); i++){
        int a = action.get(i);                
        char [] nextbrd = result(brd, a, agent);

            if(status(nextbrd)=='C')  //if the game is not yet over
                v = minvalue(nextbrd);
            else 
                v = utility(nextbrd);

            if(v==Math.max(m, v))  
                nextAction = a;
            m = Math.max(m, v);

    }return m;}

Это приводит к ошибке переполнения стека. Я проверял свой код много раз, но Я не знаю, что не так. Это потому, что две функции вызывают друг друга много раз? Должен ли я использовать темы? Пожалуйста, помогите мне

...