【发布时间】:2014-11-16 17:29:54
【问题描述】:
我正在编写一个二分搜索算法,我想获得搜索我提供的数字所需的最小猜测数。假设我提供的数字是 33,那么它应该计算 7 步。
Step no number guessed result range of possible values
0 1-100
1 50 too high 1-49
2 25 too low 26-49
3 37 too high 26-36
4 31 too low 32-36
5 34 too high 32-33
6 32 too low 33-33
7 33 correct
这是我的代码
package binarySearch;
public class Binary {
int gussedNo;
public static int count =0;
void search(int lowerBound,int upperBound,int num){
gussedNo=upperBound+lowerBound/2;
count();
if(gussedNo==num){
System.out.println(count);}
else if(gussedNo>num){
upperBound=gussedNo-1;
search(lowerBound,upperBound,num);
}
if(gussedNo<num){
lowerBound=gussedNo+1;
search(lowerBound,upperBound,num);
}
}
int count(){
count=count+1;
return count;
}
}
我创建了一个单独的方法。这是我的主要课程..
package binarySearch;
public class MainClass {
public static void main (String[] args){
Binary search= new Binary();
search.search(1, 100,33 );
}
}
这里我给了下限为 1,上限为 100,我想猜测的数字是 33。 但是当我执行代码时,我得到的计数是 68..但根据二进制搜索应该是 7
【问题讨论】:
-
“任何数字的最小猜测”总是1。
标签: java recursion binary-search