재귀 알고리즘 분석 및 분할 및 정복의 전략

재귀 및 분할 및 정복 전략

자신을 호출 직접 또는 간접적으로 알고리즘은 재귀 알고리즘이라고합니다. 함수 정의는 함수 자체에 의해 호출 재귀 함수를 주어진.
설계 및 분석 컴퓨터 알고리즘에서 재귀 기술은 알고리즘의 함수의 정의와 설명을 간단하고 이해하기 쉽게 만드는 경향이있다.

실시 예 1 팩토리얼 함수

: 재귀 적으로 정의 될 수있다
여기서
! N-때 = 0, N = 1 인 경계 조건 인
N-> 0, N = N (N-1 ) 재귀 식!이다
재귀 요소 경계 조건 방정식 두 재귀 함수 계산의 유한 수 후 결과를 얻기 위해 오직 두 요소 재귀 함수.

실시 예 2 피보나치 수
무한 급수 1,1,2,3,5,8,13,21,34,55는, ... 순서 피보나치 칭한다. 이는 반복적으로 정의 될 수있다 :
n 번째 피보나치 수 재귀 적으로 계산 될 수있다 다음과 같이
INT 피보나치 (INT N) { 
       경우 (N <= 1) 창 1; 
       리턴 피보나치 (N-1) + 피보나치 (N-2); 
   }

 

재귀 필요가 경계 조건, 사전 기간의 재귀 및 재귀 수익을 가지고 있습니다.
; 경계 조건은 재귀 앞으로 만족하지 않을 경우
경계 조건이 충족되는, 재귀 수익을.
참고 : 증분 감소 전략을 사용하는 경우,이라는 재귀 수출 명확한 재귀 종료 조건이 있어야합니다, 또는 무제한 (교착 상태)에 갈 것입니다.
재귀 단점 :
재귀 알고리즘 운영 효율성을 해결 낮은 문제.
재귀 호출하는 과정에서 시스템은 각 계층, 지역 변수의 점에 반환하고, 그래서 저장소에 스택을 열었다. 스택 오버 플로우를 일으킬 재귀 너무 많이는 것.

각 디지트 출력의 실시 예에서 역방향 양수 3

예 번호 12345, 54321 개 순차적으로 출력하는
분석 : N / 10 == 0, N 개의 출력, 그렇지 않으면 n 개의 출력 10 %, 그 후, N 대 / 10와 동일한 과정을 수행
보이드 뒷면 (INT 않음) { 
	경우 (N / 10 == 0) 
  		COUT << N; 
  또 { 
		COUT << N의 10 %; 
		(N은 / 10)를 역방향; 
   } 
} 
의 main () { 
    뒷면 (12345); 
}

 

 
각 디지트 순차적의 양수를 출력
예를 들어, 번호 12345, 12345를 순차적으로 출력한다
분석 : N / 10 == 0이면 n 개의 출력하면, n 개의 그렇지 후 가장 먼저 / 10와 동일한 처리, COUT << N의 10 %;
보이드 뒷면 (INT 않음) { 
	경우 (N / 10 == 0) 
  		COUT << N; 
  또 { 
		역방향 (N / 10); 
		COUT << N의 10 %; 
   } 
} 
의 main () { 
    뒷면 (12345); 
}

 

추천

출처www.cnblogs.com/khnl/p/11639258.html