데이터 구조와 알고리즘 (XI) 재귀

재귀


재귀는 무엇입니까?

프로그램으로 호출 재귀라는 프로그래밍 기술 (재귀)가 . 재귀 알고리즘으로 널리 프로그래밍 언어를 사용했다. 절차 또는 함수 호출을 직접 또는 간접 방식 자체는 작은 문제와 유사한 문제 원래 문제로 변환 큰 복합 층의 정의 또는 설명 재귀 해결 통상 만 문제 해결 과정을 설명 할 수있는 프로그램을 덜 필요로 크게 코드 크기를 줄이고 필요한 계산을 반복한다. 문의 무선 기능 재귀 유한 세트가 객체를 정의하는 것으로합니다.

일반적으로, 재귀 필요가 경계 조건, 사전 기간의 재귀 및 재귀 수익을 가지고 있습니다. 경계 조건이 충족되지 않을 경우, 앞으로 재귀, 경계 조건이 충족되는, 재귀 수익을.

전진 각이 큰 복합 층에 실제로 변환 부분 재귀 생각 해결 작은 문제 유사한 원래 문제는 동일한 사상의 문제로 변환하고,이 분열 컨커 알고리즘 분할 컨커 알고리즘 버블 상이한 생각 정렬 선택 정렬 알고리즘, 그것은 특정 운영 절차가없는,이 문제를 해결하기 위해 생각이다.

사전 나눈 컨커 알고리즘의 각

이러한 데이터를 처리하는 꽤 몇 가지 문제가 있거나 용액 공정은 꽤 오랜 시간에 직접적인 방법을 아주 복잡하거나 직접 얻을 수 없기 때문에 때 우리는 어떤 문제를 해결. 이러한 문제를 들어, 우리는 몇 가지 하위 문제로 내려 놓고 여러 하위 문제 후 얻어진 용액을 찾은 다음 전체 문제의 해결책을 모색에 넣어 올바른 방법을 찾는 경향이있다. 또한, 많은 곤란이 서브 문제 해결하는 경우, 용액은 지금까지 직접 획득 될 수있을 때까지, 그들은 등등 여러 작은 하위 문제들로 분할 될 수있다. 이 분할 통치의 분할과 정복 알고리즘의 기본적인 생각이다.

방법 이진 검색 예를 찾기 위해 배열 요소의 배열을 학습하기 전에 분할 및 정복 알고리즘에 속한다.

알고리즘과 수익 세그먼트를 역 추적

되돌아가 실제로 검색 프로세스를 열거하는 유사한 시도, 주요 문제가되고 해결 조건이 다른 경로를 시도 돌아가려면 "뒤로"에 만족하지 않는 것으로 발견했을 때, 검색 시도 과정에서 해결책을 찾는 것입니다. 역행이 목표를 달성하기 위해 상기 순방향 검색 조건에 바람직한 최적의 선택으로부터 선택된 검색 방법이다. 단계가 탐험 때, 원래의 선택이 목표를 달성하기 위해 또는 우수하지 않습니다 발견, 그것은 되돌아와 만나는 조건이 막 다른 골목이 되돌아라는 일부 국가 도보 기술을 롤백 할에 스텝 다시 재 - 선택이다 요점은 "되돌아"점이라고합니다. 많은 복잡한 대규모 문제는, 찬미 "보편적 인 문제 해결 접근 방식을"역 추적 할 수 있습니다.

재귀 루프

간단히 말해,주기는 반환 할 적이없고, 재귀 (때문에 종료 조건으로) 다시 거기 갈 것입니다.

예를 들어, 현관 문, 당신 뒤에 문을 잠금 해제를 찾을 수있는 결과가, 문을 열고 키 손을 사용하고, 당신은 문을 볼 수 ...하지만 당신은을 열 때 벽 앞에 발견 문이 방법 밖에 없을 때, 당신은 철수에게 선택 -이 재귀

당신이 문을 열 경우에, 같은 일이있다, 당신은 즉시 당신이 마지막으로 문을 열 때까지 외출, 또는 (무한 루프)의 말에 충족하지 않았습니다 다음 문을 열고 그들 앞에서 발견 - 이것은주기이다 .

마지막으로 다음과 같은 측면에서 재귀를 일반화 :

  • 재귀 성능 : 함수를 직접 호출

    재귀 사용 : 크고 복잡한 문제 해결이 작은 문제들을 해결하기 위해

    재귀 장점 : 적은 코드

    재귀 단점 : 공간은 함수가 스택 메모리를 기반으로 실행

    재귀 요소 : 앞으로 세그먼트, 경계 조건, 반환 세그먼트

게시 70 개 원래 기사 · 원의 찬양 (56) · 전망 1961

추천

출처blog.csdn.net/qq_43624033/article/details/104098786