while(looper)
{
char higher = 'h';
char lower = 'l';
guess = getMidpoint(min,max);
char respons = getUserResponseToGuess(guess);
if(respons == 'c'){
looper = false;
}
else if(respons == higher)
{
min = min + 1;
getMidpoint(min,max);
}
else if(respons == lower)
{
max = min - 1;
getMidpoint(min,max);
}
}
public static int getMidpoint(int low, int high)
{
int midpoint;
midpoint = (high + low) / 2;
return midpoint;
}
所以基本上这是一个使用二进制搜索的猜谜游戏,getMidpoint方法获得两个数字的中间值,min为1,max为100. h代表高,l代表低,c代表正确。我有一切正确,但猜测一直很奇怪,就像它给我随机数字。如何更新最大值和最小值以使其正确显示?希望我说得对。
答案 0 :(得分:0)
else if(respons == higher)
{
min = min + 1;
getMidpoint(min,max);
}
else if(respons == lower)
{
max = min - 1;
getMidpoint(min,max);
}
这部分很奇怪。如果猜测应该更高,那么您应该min = midpoint + 1
而不是仅将min
增加1.当它应该更低时,你应该做max = midpoint - 1
。
您尚未显示getMidpoint()
的实施,因此我不确定guess
是否可以用作新的min
/ max
。< / p>