-1
왜 내 binarySearch 메서드가 원하는 대상 번호를 찾을 수 없는지 이해할 수 없습니다. 예를 들어 main 메소드의 경우, 길이가 3 인 배열 (1,2,3)과 대상 번호 인 3을 사용했습니다. 이진 검색 방법에서는 한 지점에서 시작 및 끝 변수가 2 (2, 인덱스 값). 내 코드에서 시작과 끝이 서로 같으면 소스 [mid]가 2와 같을지를 확인하는 조건이 있습니다. 그런 다음 사실을 반환합니다. 그러나 나는 그것이 사실로 돌아 오지 않는 이유를 이해하지 못합니다. 이진 검색에서 대상 번호를 찾을 수 없습니다.
함수 끝에
return false
을 제거하고 코드의 또 다른 라인을 추가없이 다음
수정 컴파일러 에러
이 이후 public class Searches {
public static boolean binarySearch(int[] source,int start, int end, int target)
{
int mid = start + (end - start)/2;
if (start == end)
{
if (source[mid] == target) return true;
}
if (target < source[mid])
{
end = mid - 1;
binarySearch(source,start, end,target);
}
else if (target > source[mid])
{
start = mid + 1;
binarySearch(source, start, end, target);
}
else return true;
return false;
}
public static void main(String[] args)
{
int[] b = {1,2,3};
System.out.println(binarySearch(b,0,b.length-1, 3));
}
}
디버거를 사용하여 코드를 단계별로 실행하는 방법을 알고 있습니까? –
당신은 실제로 재귀 호출의 결과를 사용하지 않습니다 ... – Sinkingpoint