2014-02-27 4 views
1

값이 배열에 있는지 없는지를 찾는 바이너리 검색 방법을 구현해야합니다. 나는 재귀를 사용해야한다.Java 바이너리 검색 재귀

Missing return statement

감사 :

public static boolean searchBin(int[] array, int x, int l, int r) { 

     int center; 

     center =(l+r)/2; 
     if (x > array[center]) 
     { 
      l = center+1; 
     } 
     else 
     { 
      r = center-1; 
     } 

     if (array[center] == x) 
     { 
      return true; 
     } 
     else 
     { 
      if (l<=r) 
      { 
       searchBin(array,x,l,r); 
      } 
      else 
      { 
       return false; 
      } 
     } 
    } 

나는 다음과 같은 오류를 받고 있어요.

+0

에 재귀 호출이 돌아올 수 없다 당신이 아무것도 반환하지 않는 경로. 그러나 메소드는 뭔가를 반환해야합니다 .. – Maroun

+1

return return Bin (array, x, l, r); '? –

답변

2

실행 가능한 경로 중 하나가 수익 문 없음으로 이어질 수 있기 때문입니다 : 마지막 if의 조건 l<=rtrue는 아무 것도 반환되지 않습니다 경우 (만 재귀 적 메소드를 호출).

당신은 재귀 호출하기 전에 return 키워드를 추가 할 수 있습니다

:

return searchBin(array,x,l,r); 

이 방법, 당신의 메서드에서 반환 (이 경우) 어떤 재귀 호출로 돌아갑니다.

2

오류가 "모든 경로가 값을 반환하지는 않습니다"라고 제안했기 때문입니다.

이 가능한 문제 : 수정 사항이 될 것입니다

searchBin(array,x,l,r); 

:

return searchBin(array,x,l,r); 
1

가 존재하기 때문에이

searchBin