노트의 재귀 버전을 작성뿐만 아니라 재귀 적으로 검색 바이너리

재귀 방법은 이진 검색을 구현합니다.

정렬 된 어레이 목록에서 인덱스 1에서 시작하는 대상 배열 여부를 확인한다. 리턴 인덱스, 그렇지 않으면 0의 말에.

사고
   1. 선형은 일반적으로 오름차순 정렬, 테이블을 정렬.
  2. 중간 값을 목표 값과 비교된다.
  2.1 비교 중간 값과 목표 값이 동일한 경우, 아래 첨자는 출구로 복귀된다.
  2.2 중간 값은 최소값 사이의 중간 값을 찾아서 2를 계속 수행 할 목표 값보다 크다.
  2.3 목표 값보다 작은 중간 값은, 다음의 검색이 계속되고, 최대 값 사이의 중간 값 2를 수행한다.
 

초판 (오류)

INT recursive_bin_ser ( INT *에서, INT 길이 INT의 타겟) {
     INT 분 = 1. , 최대 = 길이 - 1. , MID = (최대 + 최소) / 2 ;
     IF (리스트 [중간] == 타겟) 반환 MID 단계;
     다른  IF (리스트 [MID] <목표) 복귀   recursive_bin_ser (MID + + 목록 1. , 된 Max MID 대상)
     다른  리턴 recursive_bin_ser (목록, 중간 , 최소 대상) 
} 
.. 타겟을 처리하는하지 않고 // 1 존재하지.
// 2. 더 나쁜, 함수 호출, 최소, 최대, 중간이 될 것입니다 때마다 사실 경우, 최소, 최대, 중간 분 이전 실행, 최대, 중간의 함수가 될 수 없다, 재 초기화.
// 각 통화 기능, 로컬 변수의 최소, 최대, 중간에 할당하는 기능을 갖는다. 매개 변수의 형태로 시정 조치, 통과시켰다.


두 번째 판

INT recursive_bin_ser ( INT *리스트 INTINT 맥스 INT의 타겟) {
     INT 중간 = (최대 분 +) / 2 ; 
    반면 (분 <= 최대) {
     경우 (리스트 [미드] == 타겟) 복귀 미드;
    다른  경우 (리스트 [미드] <목표) 복귀   recursive_bin_ser (목록, 미드 + 1 , 최대 표적);
    다른  반환 recursive_bin_ser (목록, 분, 미드 - 1 , 대상); 
    } 
    반환  0 ; 
}
재귀 함수를 수행 할 때 우리 // 최소 것이다 1. 형태의 함수로서 최대 파라미터, 함수는 최대 도달했고 분은 개체의 기능에 액세스 할 수있다. 나는 미래가 재귀 함수에서 가능한 한 적게 생각
// 선언 변수, 신입생 메모리 오버 헤드, 쉽게 혼동 각 기능 사이의 같은 이름의 두 번째 변수입니다.
//2.while(min <= 최대) 루프가 종료 그것이 마지막 분 최대 = 때문에 대상이 목록에없는 것을 나타내는 경우에는, 분 + 1 다음 단계 또는 맥스 -1;
int로 주 () {
     INT의 리스트 [ 5 ] = {
         0 , 1 , 2 , 3 , 4 
    }; 
    표준 : : 정렬 (목록, 목록 + 5 ); // 排序 
    의 printf ( " % D \ n " , recursive_bin_ser (리스트 1 , 4 , 100 ));

 12.30, 그래서이라고해도, 깨진 수면뿐만 아니라 하루 도구 사람들로! ! !

추천

출처www.cnblogs.com/jielearscoding/p/12556348.html