我写了这个递归方法来查找整数数组中的整数,但它不起作用。我试着调试它,但我不知道问题可能是什么。
下面是代码
public static String inList(int[] primes,int a){
int index = -9;
if(primes.length>1){
index = primes.length/2;
}else{
if(primes[0] == a){
return "True";
}else{
return "False";
}
}
if(primes[index] == a){
return "True";
}
if(primes[index] > a){
inList(Arrays.copyOfRange(primes, 0, index),a);
}
if(primes[index]<a){
inList(Arrays.copyOfRange(primes, index, primes.length),a);
}
//shouldn't even get to this point, but eclipse insisted I needed another return
//statement
return "Whyyyyy?";
}
您忘记添加return
你对数组排序了吗?
if(primes[index] > a){
return inList(Arrays.copyOfRange(primes, 0, index),a);
}
if(primes[index]<a){
return inList(Arrays.copyOfRange(primes, index, primes.length),a);
}
只用Arrays.binarySearch()
。正如您将从它的不同原型中看到的那样,当且仅当您在数组中寻找的值不存在时,它将返回一个负值。
在数组中查找的递归函数是:
public static String inList(int[] primes,int index, int a) {
/* two breaking conditions for recursion: end of array or number found */
if(index >= primes.length)
return "False";
if(primes[index] == a)
return "True";
/* recursion */
return inList(primes, ++index, a);
}
可以用index = 0
ex. inList(primes, 0, a)
调用上述方法。这将比非递归查找方法慢得多。