데이터 구조와 알고리즘(6): 귀속
귀속
이른바 귀속이란 간단하게 말하자면 하나의 함수가 직접 또는 간접적으로 자신을 호출하는 방법으로 통상적으로 하나의 대형 복잡한 문제를 층층이 원래의 문제와 비슷한 규모가 비교적 작은 문제로 바꾸어 해답을 구한다.
큰 놈의 예를 인용하다.
우리는 '귀속' 을 '사전 찾기' 에 비유할 수 있다. 네가 한 단어를 찾아보면, 이 단어의 해석 중의 어떤 단어가 여전히 이해하지 못하는 것을 발견하고, 그래서 너는 이 두 번째 단어를 찾기 시작한다.
아쉽게도 두 번째 단어에 아직도 모르는 단어가 있다. 그래서 세 번째 단어를 찾아라. 이렇게 조사해 보면 한 단어의 해석이 네가 완전히 이해할 수 있을 때까지 끝까지 돌아간다. 그리고 너는 뒤로 물러나기 시작한다. 전에 조사한 단어 하나하나를 하나하나 알아낸다. 결국 너는 처음에 그 단어의 뜻을 분명히 밝혔다.
우리는 사전 검색을 하나의 함수
search(){}
로 이해했고, '알았다' 는 정지 조건이었다.이 사고방식에 따르면 이 절차는 바로 이렇다.
public void search(){
//
if(" "){
return;
}
//
search();
}
우리는 간단한 예를 들자.
다음 코드를 사용하여 단계 곱하기
1*2*3*.....*(n-1)*n
를 계산합니다.public static int mult(int n) {
// , n=1 1
if (n == 1){
return n;
}
// n*(n-1).....
return n * mult(n - 1);
}
2. 귀속과 창고의 관계
귀속 과정은 바로 창고에 출입하는 과정이다
귀속된 문제는 사실상 모두 출입창고 문제로 나눌 수 있다. 우리는 상기 계산
1*2*3*.....*(n-1)*n
이라는 예를 들어 이해할 수 있다.만약 n=4라면 과정은 이렇다.
StackOverflowError
3. 귀속적인 사용 조건
그러면 우리는 귀환을 사용하여 문제를 해결할 때가 되었다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.