爲什麼下面的代碼返回-1而不是arr.length-1
?如果find()
方法正在尋找24,它應該返回5,但現在它返回-1。如果在arr中找不到n,它應該只返回-1。返回聲明未按預期返回
public class linearArraySearch {
public static void main(String[] args) {
int[] numbers = new int[]{ 12, 42, 56, 7, 99, 24, 6, 1, 5 };
System.out.println(find(numbers, 24));
}
public static int find(int[] arr, int n){
if(arr[arr.length-1] == n){
return arr.length-1;
}else if(arr.length > 1 && arr[arr.length-1] != n){
int[] temp = new int[arr.length-1];
for(int i = 0; i < temp.length; i++){
temp[i] = arr[i];
}
find(temp, n);
}
return -1;
}
}
你需要用遞歸做呢?應該非常簡單,只使用for循環 – Nanoc
應該'find(temp,n)'是'return find(temp n)'?否則,你忽略了遞歸的結果。 – khelwood