我有一個陣列,它只用升序整數預先排序:
int[] intArray = new int[]{ 1,2,3,4,5,6,7,8,9 };
我希望我的程式在該陣列中搜索一個整數,我將其稱為“gesucht”,并回傳陣列中“gesucht”所在的位置。
我可能不使用任何回圈、包或類似 .find 方法的東西,而必須使用遞回
這是我的程式:
public static int optimierteSuche(int gesucht, int[] array, int startposition, int endposition){
if((0<=startposition && startposition<=endposition && endposition<=array.length) == false){
throw new IllegalArgumentException("wrong input");
}
int m = (endposition-startposition)/2;
if (gesucht == array[m]){
return m;
}
if (array[m]<gesucht){
optimierteSuche(gesucht, array, m 1, endposition);
} else {
optimierteSuche(gesucht, array,startposition, m-1);
}
}
當我在我的主要方法中使用以下內容時:
int[] intArray = new int[]{ 1,2,3,4,5,6,7,8,9 };
System.out.println(optimierteSuche(2,intArray,0,intArray.length));
我的編譯器告訴我,我的方法缺少一個 return 陳述句,雖然它在那里,當我使用我的演算法并自己計算步驟時它可以作業(或者至少我會說它可以)
我已經嘗試對其進行一些調整,但它也不起作用:
public static int optimierteSuche(int gesucht, int[] array, int startposition, int endposition){
if((0<=startposition && startposition<=endposition && endposition<=array.length) == false){
throw new IllegalArgumentException("wrong input");
}
int m = (endposition-startposition)/2;
int ergebnis = 0;
if (gesucht == array[m]){
ergebnis = m;
}
if (array[m]<gesucht){
optimierteSuche(gesucht, array, m 1, endposition);
} else {
optimierteSuche(gesucht, array,startposition, m-1);
}
return ergebnis;
}
由于興趣,我學習經濟學并參加了一些編程課程,但因此與許多其他編程專業的聯系并不多,并且希望得到一些幫助。謝謝!
uj5u.com熱心網友回復:
tgdevies 是正確的,歸功于他們,但因為評論并不總是表達需要發生的事情......
public static int optimierteSuche(int gesucht, int[] array, int startposition, int endposition) {
if ((0 <= startposition && startposition <= endposition && endposition <= array.length) == false) {
throw new IllegalArgumentException("wrong input");
}
int m = (endposition - startposition) / 2;
if (gesucht == array[m]) {
return m;
}
if (array[m] < gesucht) {
return optimierteSuche(gesucht, array, m 1, endposition);
}
return optimierteSuche(gesucht, array, startposition, m - 1);
}
uj5u.com熱心網友回復:
我認為您想將 ergebnis 設定為等于兩次呼叫 optimierteSuche 的回傳值,并修復中間位置的計算,并再添加一個“else”,使其看起來像這樣:
public static int optimierteSuche(int gesucht, int[] array, int startposition, int endposition){
if((0<=startposition && startposition<=endposition && endposition<=array.length) == false){
throw new IllegalArgumentException("wrong input");
}
int m = startposition ((endposition-startposition)/2);
int ergebnis = 0;
if (gesucht == array[m]){
ergebnis = m;
}
else
if (array[m]<gesucht){
ergebnis=optimierteSuche(gesucht, array, m 1, endposition);
} else {
ergebnis=optimierteSuche(gesucht, array,startposition, m-1);
}
return ergebnis;
}
你快到了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/417448.html
標籤:
