【发布时间】:2018-10-12 13:44:27
【问题描述】:
at TicTacToe.minvalue(TicTacToe.java:184)
at TicTacToe.maxvalue(TicTacToe.java:197)
at TicTacToe.minvalue(TicTacToe.java:184)
at TicTacToe.maxvalue(TicTacToe.java:197)
at TicTacToe.minvalue(TicTacToe.java:184)
at TicTacToe.maxvalue(TicTacToe.java:197)
at TicTacToe.minvalue(TicTacToe.java:184)
at TicTacToe.maxvalue(TicTacToe.java:197)
at TicTacToe.minvalue(TicTacToe.java:184)
at TicTacToe.maxvalue(TicTacToe.java:197)
at TicTacToe.minvalue(TicTacToe.java:184)
我看不到错误,因为它太长了。 下面是函数 maxValue() 和 minValue()
private int minvalue(char [] brd){
int m = (int) Integer.MAX_VALUE;
int v;
for(int a : actions(brd)){
char [] nextbrd = result(brd, a, human);
if(status(nextbrd)=='C') v = maxvalue(nextbrd); //line 184
else v = utility(nextbrd);
m = Math.min(m, v);
}
return m;
}
private int maxvalue(char [] brd){
int m = (int) Integer.MAX_VALUE;
int v;
for(int a : actions(brd)){
char [] nextbrd = result(brd, a, agent);
if(status(nextbrd)=='C') v = minvalue(nextbrd); //line 189
else v = utility(nextbrd);
if(v==Math.max(m, v)) nextAction = a;
m = Math.max(m, v);
}
return m;
}
如果获胜者是代理,则实用程序 function() 仅返回 1。 -1 否则。 如果游戏尚未结束,则状态返回“C”。 我不知道怎么了。
更新:我将 maxValue() 函数中的 m 更改为 MIN_VALUE 但我仍然遇到相同的错误。
【问题讨论】:
-
这是完整的代码吗?你能添加完整的代码吗
-
您需要发布异常。在输出中向上滚动。
-
我看到一个错误,用于查找 Max 和 min 你都使用 Integer.MAX_VALUE,对于 max 它应该是 Integer.MIN_VALUE;
-
看起来您遇到了 StackOverflow 错误 stackoverflow.com/questions/214741/what-is-a-stackoverflowerror
标签: java recursion artificial-intelligence tic-tac-toe minimax