如何更新代码中的中点?

时间:2016-02-10 03:40:55

标签: java binary-search

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代表正确。我有一切正确,但猜测一直很奇怪,就像它给我随机数字。如何更新最大值和最小值以使其正确显示?希望我说得对。

1 个答案:

答案 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>