Я кодирую алгоритм двоичного поиска, и я хочу получить минимальные догадки подсчета, чтобы найти номер, который я предоставляю. Предположим, что число, которое я предоставляю, равно 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);
}
}
Здесь я дал LowerBound как 1 и uperbound 100, а число я хочу считать догадки для него 33. Но когда я выполняю код, который я получаю считаются 68..but это должно быть 7 в соответствии с бинарным поиском
«на ** минимум ** догадок «для любого числа всегда 1. –