我编写了这个递归方法来查找整数数组中的整数,但它不起作用。我试过调试它,但我不知道问题是什么。
这是代码
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?";
}
答案 0 :(得分:2)
只需使用Arrays.binarySearch()
即可。正如您将从其不同的原型中看到的那样,当且仅当您在数组中寻找的值不存在时,它将返回负值。
答案 1 :(得分:2)
您忘记添加返回
你对阵列进行了排序吗?
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);
}
答案 2 :(得分:1)
在数组中查找内容的递归函数将是:
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)
。这将比非递归查找方法慢得多。