【发布时间】:2020-03-09 19:15:33
【问题描述】:
我正在尝试使用递归实现二进制搜索,但我没有得到预期的正确结果。代码如下:
import java.util.*;
class BinarySearchRecursion{
static private int searchNum(int[] array, int item){
if(array.length >=2){
int remainder = array.length%2;
int splitSize = array.length/2;
if(remainder==0){
if(item> array[splitSize-1]){
int num = searchNum(Arrays.copyOfRange(array,splitSize,array.length), item);
return num;
}else{
int num = searchNum(Arrays.copyOfRange(array,0,splitSize), item);
return num;
}
}else{
if(array[splitSize]== item)
return splitSize;
if(item> array[splitSize-1]){
int num = searchNum(Arrays.copyOfRange(array,splitSize,array.length), item);
return num;
}else{
int num = searchNum(Arrays.copyOfRange(array,0,splitSize), item);
return num;
}
}
//System.out.println(splitSize);
}else{
if(array[0] == item){
System.out.println("Item exist");
return item;
}
else
return -1;
}
//return -1;
}
public static void main(String... args){
int[] arr = {1,2,3,4,5,6,7,8,9,10};
int index = searchNum(arr, 89);
if(index != -1){
System.out.println("Number exist: "+ Integer.valueOf(index));
}
else
System.out.println("Number does not exist in the given list.");
}
}
我没有得到正确的项目,比如如果我搜索 8 它会给我价值 2 等等。我在这里做错了什么?
【问题讨论】:
-
可以,但我会自己写代码,不想复制/粘贴。
标签: java recursion binary-search