在執行它之前,我有一些代碼可以做一些測試。基本上在第二次遞歸調用它應該進入這一行(否則如果(sec> = 1){返回測試(s,lowerBounds + middle + 1,upperBounds);})但它不會改變它到另一個否則,如果和更改sec的值。我錯過了什麼嗎?Java遞歸問題
public class Main
{
private static String[] test = { "aaa", "aab", "aac", "aad", "aae" };
public static void main(String[] args) {
System.out.println(test("aab", 0, 4));
}
public static int test(String s, int lowerBounds, int upperBounds) {
if(upperBounds < lowerBounds || upperBounds > lowerBounds) {
int middle = (upperBounds – lowerBounds)/2;
int sec = s.compareTo(test[lowerBounds + middle]);
if(sec == 0)
{ return lowerBounds + middle; }
else if(sec <= -1)
{ return test(s, lowerBounds, upperBounds – middle – 1); }
else if(sec >= 1)
{ return test(s ,lowerBounds + middle + 1, upperBounds); }
} else { return -1; }
return -10;
}
}
編輯:對不起,我應該說這是我自己的二進制搜索實現。我仍然自己學習編程,所以如果我以某種方式搞砸了,請不要激怒我。
編輯:如果我刪除第一條if語句它看起來好像它工作正常?