수학과 컴퓨터 과학에서 개체나 메서드 클래스는 두 가지 속성으로 정의될 수 있을 때 재귀적 동작을 나타냅니다.
간단한 기준 조건 --- 종료 사례를 사용하지 마세요 재귀가 답을 생성하는 경우
일련의 규칙은 다른 모든 경우를 기준 조건으로 축소합니다.
예를 들어, 다음은 누군가의 조상에 대한 재귀적 정의입니다.
누군가 어떤 사람의 부모가 그 사람의 조상입니다(기준 조건)
어떤 사람의 조상의 조상이 그 사람의 조상이기도 합니다(재귀 단계)
피보나치 수열은 재귀의 전형적인 예입니다.
Fib(0) = 1개의 기준 조건 1;
Fib(1) = 1개의 기준 조건 2;
모든 정수 n, n > 1에 대해: Fib (n) = (Fib(n-1) + Fib(n-2)).
많은 수학적 공리는 재귀 규칙을 기반으로 합니다. 예를 들어, 페아노(Peano)의 공리에 의한 자연수의 형식적 정의는 다음과 같이 설명할 수 있습니다. 0은 자연수이고, 모든 자연수는 후속수를 가지며, 이 역시 자연수입니다. 이 기본 조건과 재귀 규칙을 사용하면 모든 자연수 집합을 생성할 수 있습니다.
재귀적으로 정의된 수학적 개체에는 함수, 집합, 특히 도형이 포함됩니다.
재귀에 대한 다양한 "정의"도 있습니다.
비공식적 정의
재귀는 프로그램의 한 단계에서 프로그램 자체를 호출하는 것입니다. 재귀를 거치는 과정을 "재귀"라고 합니다.
재귀를 이해하려면 프로그램과 프로그램 실행의 차이점을 인식해야 합니다. 절차는 일련의 규칙을 기반으로 하는 일련의 단계입니다. 프로그램을 실행하려면 실제로 규칙을 따르고 단계를 실행해야 합니다. 비유하자면, 프로그램은 서면 조리법과 비슷하고, 프로그램을 실행하는 것은 실제로 식사를 준비하는 것과 같습니다.
재귀는 다른 프로그램 실행에 대한 프로시저 사양의 참조와 관련되어 있지만 동일하지는 않습니다. 예를 들어 조리법은 야채 요리를 의미할 수 있지만 물 추가와 같은 단계는 또 다른 절차입니다. 그러나 재귀 프로세스는 (적어도) 단계 중 하나에 동일한 프로세스의 새로운 인스턴스가 필요한 프로세스입니다. 마치 사워도우 레시피가 마지막으로 동일한 레시피를 만들었을 때 남은 반죽이 필요한 것과 같습니다. 이는 즉시 무한 루프의 가능성을 생성합니다. 재귀는 사워도우 레시피와 같은 정의에서만 올바르게 사용될 수 있으며, 어떤 경우에는 프로그램을 완료하기 위해 문제의 단계를 건너뛰는지 알려줍니다. 반죽을 한 번도 만들어본 적이 없는 경우를 대비해 반죽을 만드세요. 올바르게 정의된 경우에도 재귀 프로시저는 프로시저에 대한 새 호출과 이전 호출(부분 실행)을 구별해야 하기 때문에 인간이 실행하기 쉽지 않습니다. 이를 위해서는 프로그램의 다양한 동기화 인스턴스가 얼마나 진행되었는지 관리해야 합니다. 따라서 일상적인 상황에서는 재귀적 정의가 매우 드뭅니다. 예를 들어 미로를 통해 길을 찾는 다음 프로세스가 있을 수 있습니다. 출구 또는 분기점에 도달할 때까지 계속 진행합니다(막다른 끝은 분기점이 0개인 분기점으로 간주됩니다). 도달한 지점이 출구인 경우 종료합니다. 그렇지 않으면 절차를 반복적으로 사용하여 각 분기를 차례로 시도합니다. 각 시도가 막다른 골목에 도달하여 실패하면 해당 분기 지점으로 이어진 경로로 돌아가 실패를 보고합니다. 이것이 실제로 종료 프로세스를 정의하는지 여부는 미로의 특성에 따라 다릅니다. 즉, 루프를 허용하지 않습니다. 어떤 경우든 이 프로세스를 수행하려면 현재 탐색된 모든 분기점과 철저하게 시도된 분기점을 주의 깊게 기록해야 합니다.
언어에 대하여
언어학자 노암 촘스키(Noam Chomsky)와 다른 많은 사람들은 언어의 문법 문장 수나 문법 문장의 길이(실제 제약을 넘어서는)에 상한이 없다고 믿습니다. 말하는 데 걸리는 시간 등) 이는 자연어의 재귀의 결과로 설명될 수 있습니다. 이는 문장과 같은 구문 범주의 재귀적 정의 측면에서 이해될 수 있습니다. 문장은 동사 뒤에 다른 문장이 오는 구조를 가질 수 있습니다. Dorothy는 마녀가 위험하다고 생각합니다. 이 구조에서는 "마녀는 위험합니다"라는 문장이 사용됩니다. 더 큰 문장으로 나타납니다. 따라서 문장은 명사구, 동사 및 선택적으로 다른 문장으로 구성된 구조로 재귀적으로(매우 대략적으로) 정의될 수 있습니다. 이것은 실제로 재귀의 수학적 정의의 특별한 경우입니다.
이것은 문장의 길이에 관계없이 즉시 예측할 수 있기 때문에 무한한 수의 문법 문장인 언어의 생성을 이해하는 방법을 제공합니다. 도로시는 토토가 양철 나무꾼이 말한 것을 의심한다고 생각합니다... ..재귀적으로 정의할 수 있는 문장 외에도 많은 구조가 있으므로 문장이 한 범주의 인스턴스를 다른 범주에 포함할 수 있는 방법은 많습니다. 수년에 걸쳐 일반적으로 언어는 이러한 종류의 분석에 적합한 것으로 입증되었습니다.
그러나 최근 다니엘 에버렛(Daniel Everett)은 피라(Pyrrha)에 대한 그의 주장을 바탕으로 재귀가 인간 언어의 기본 속성이라는 일반적으로 받아들여지는 견해에 이의를 제기했습니다. Andrew Nevins, David Pesetsky 및 Cilene Rodrigues는 이 아이디어에 반대하는 많은 사람들 중 하나입니다. 어쨌든 문학적 자기 참조는 수학적 또는 논리적 재귀와는 별개로 생각될 수 있습니다.
재귀는 문법뿐만 아니라 자연어 의미론에서도 중요한 역할을 합니다. 예를 들어 단어 and는 문장 의미에 적용되어 새로운 문장을 만들 수 있는 함수로 이해될 수 있으며, 명사구 의미, 동사구 의미 등에도 사용될 수 있습니다. 또한 자동사, 타동사 또는 이중수동 동사와 함께 작동합니다. 적절하게 유연한 단일 표현을 제공하기 위해 일반적으로 이러한 다양한 유형의 의미를 인수로 사용할 수 있도록 정의됩니다. 이는 문장을 결합하는 단순 사례에 대해 정의한 다음, 단순 사례를 기반으로 다른 사례를 재귀적으로 정의함으로써 달성할 수 있습니다.
재귀 문법은 재귀 생성 규칙을 포함하는 형식 문법입니다.
재귀 유머
재귀는 때때로 컴퓨터 과학, 프로그래밍, 철학 또는 수학 교과서에서 유머러스하게 사용되며 일반적으로 순환 정의 또는 자기 참조를 제공합니다. self 인용문에서 가정된 재귀 단계는 기본 조건에 더 가까워지지 않지만 무한 회귀로 이어집니다. 이러한 책에서는 용어집에 다음과 같은 농담 항목을 포함하는 것이 일반적입니다.
또 다른 농담은 "재귀를 이해하려면 Google의 영어 버전에서 재귀를 이해해야 합니다."입니다. 웹 검색 엔진에서 "재귀"를 검색하면 사이트에 "재귀를 의미합니까?"라는 메시지가 표시됩니다. Andrew Plotkin의 또 다른 버전은 다음과 같습니다. "재귀가 무엇인지 이미 알고 있다면 답을 기억하세요. 그렇지 않으면 다른 사람을 찾으세요. 당신보다 더 가까이에 있습니다. Douglas Hofstadter와 같은 사람에게 이야기를 나눈 다음 재귀가 무엇인지 물어보세요."
재귀적 약어는 재귀적 유머의 한 예가 될 수도 있습니다. 예를 들어, PHP는 "PHP Hypertext Preprocessor"를 나타내고, WINE은 "WINE은 에뮬레이터가 아닙니다."를 나타내며, GNU는 "GNU's not Unix"를 나타냅니다.
수학에서
재귀적으로 정의된 집합
예: 자연수
재귀적으로 정의된 집합의 일반적인 예는 다음과 같습니다. 숫자:
0은 자연수입니다.
n이 자연수이면 n+1도 자연수입니다.
자연수 집합 숫자는 처음 두 속성을 충족하는 가장 작은 집합입니다.
예: 진정으로 도달할 수 있는 명제 집합
또 다른 흥미로운 예는 공리 체계에서 "진정으로 도달할 수 있는" 모든 명제의 집합입니다.
명제가 공리라면 그것은 진정으로 도달 가능한 명제입니다.
추론 규칙을 통해 진정으로 도달 가능한 명제로부터 얻을 수 있는 명제는 진정으로 도달 가능한 명제입니다.
진정으로 도달 가능한 명제 집합은 이러한 조건을 만족하는 가장 작은 명제 집합입니다.
이 세트를 "진정 도달 가능한 명제"라고 부르는 이유는 수학적 기초에 대한 비구조적 접근 방식에서 참 명제 세트가 공리 및 추론 규칙을 통해 반복적으로 구성된 세트보다 클 수 있기 때문입니다. 유한 분할 규칙
유한 분할 규칙은 프랙탈 같은 이미지를 만드는 데 사용할 수 있는 재귀적인 기하학적 형태입니다. 세분화 규칙은 유한한 수의 레이블로 레이블이 지정된 다각형 모음으로 시작한 다음 반복할 수 있는 프로세스인 원래 다각형 레이블에만 의존하는 방식으로 각 다각형을 레이블이 지정된 더 작은 다각형으로 세분화합니다. Cantor 세트를 생성하기 위한 표준 "중간 1/3" 기술은 중심 분할과 마찬가지로 분할 규칙입니다. 함수 재귀
함수는 부분적으로 자체적으로 정의될 수 있습니다.
일반적인 예는 피보나치 수열입니다: F(n) = F(n ? 1) + F(n ? 2). 이러한 정의가 유용하려면 비재귀적으로 정의된 값(이 경우 F(0) = 0, F(1) = 1)을 도입해야 합니다.
유명한 재귀함수로는 애커만 함수(Ackerman function)가 있는데, 이는 재귀 없이는 표현할 수 없다는 점에서 피보나치 수열과 다르다. 재귀적 정의와 관련된 증명
이전 섹션에서 언급했듯이 재귀적으로 정의된 집합이나 함수에 표준 사례 증명 기술을 적용하면 수학적 파생 증명에 널리 사용되는 강력한 수학적 귀납법인 구조적 귀납법이 생성됩니다. 논리와 컴퓨터 과학. 재귀 최적화
동적 프로그래밍은 다단계 또는 다단계 최적화 문제를 재귀 형식으로 다시 기술하는 최적화 방법입니다. 동적 프로그래밍의 핵심 결과는 최적화 문제의 초기(또는 이전 단계) 값을 이후(또는 이후 단계)의 값에 쓰는 벨만 방정식입니다. 재귀 정리
집합 이론에서 이는 재귀적으로 정의된 함수의 존재를 보장하는 정리입니다. 집합 X가 주어지면 집합 X의 요소 a와 함수 f: F(0)=a , F(n+1)=f(F(n)) (임의의 자연수 n에 대해).
고유성 증명
두 가지 함수 F: N-->X 및 G: N-->X를 사용하여 다음과 같이
F(0 )= a
G(0)=a
F(n+1)=f(F(n))
G(n+1) =f (G(n))
여기서 a는 집합 X의 요소입니다.
수학적 귀납법은 모든 자연수에 대해 F(n)=G(n)임을 증명할 수 있습니다.
기준 조건: n=0일 때 방정식 F(0)= a= G(0)이 성립합니다.
재귀 단계: k∈N, F(k)=G(K)가 성립할 때 F(k+1)=f(F(k) )=라고 가정합니다. f(G(k))=G(k+1), 따라서 F(k)=G(k)는 F(k+1)=G(k+1)
유도를 통과했음을 의미합니다. F(n)=G(n)(여기서 n∈N).
컴퓨터 과학에서
일반적인 단순화 방법은 문제를 동일한 유형의 하위 문제로 나누는 것입니다. 컴퓨터 프로그래밍 기술로서 이는 분할 및 정복으로 알려져 있으며 많은 중요한 알고리즘 설계의 핵심입니다. 분할 정복은 점점 더 작은 사례를 해결하여 문제를 해결하는 하향식 접근 방식입니다. 반대 접근 방식은 동적 프로그래밍으로, 원하는 크기에 도달할 때까지 점점 더 큰 인스턴스를 해결하여 문제를 해결하는 상향식 접근 방식입니다.
재귀의 전형적인 예는 C 코드로 제공되는 계승 함수의 정의입니다:
unsigned int Factorial(unsigned int n) {undefine
if (n == 0) {정의되지 않음
1을 반환;
} else {정의되지 않음
n * 계승(n - 1)을 반환;
}
}
함수는 더 작은 버전의 입력(n-1)에서 자신을 재귀적으로 호출하고 재귀 호출의 결과에 n을 곱합니다. 기준선에 도달한 조건은 계승의 수학적 정의와 유사합니다.
컴퓨터 프로그래밍의 재귀는 함수가 더 간단하고 종종 더 작은 버전으로 정의되는 경우의 예입니다. 그런 다음 문제의 더 간단한 버전에서 얻은 솔루션을 결합하여 문제에 대한 솔루션을 설계합니다. 재귀 적용의 예는 프로그래밍 언어의 파서에 있습니다. 재귀의 가장 큰 장점은 유한한 컴퓨터 프로그램으로 가능한 문장, 디자인 또는 기타 데이터의 무한한 집합을 정의, 구문 분석 또는 생성할 수 있다는 것입니다.
재귀 관계는 하나 이상의 시퀀스를 재귀적으로 정의하는 일련의 방정식입니다. 특정 유형의 재발 관계를 "해결"하여 비재귀 정의를 얻을 수 있습니다.
예술 분야에서
러시아 인형이나 마트료시카 인형은 재귀적인 개념의 물리적 예술 예입니다.
재귀는 1320년 조토(Giotto)의 스테파네스키 삼부작(Stefaneschi Triptych) 이후 회화에 사용되었습니다. 중앙 패널에는 무릎을 꿇은 스테파네스키 추기경의 모습이 포함되어 있으며, 삼부작 자체를 제물로 들고 있습니다.
M.C. Eschers Print Gallery(1956)는 그림이 반복적으로 무한하게 포함된 갤러리 내의 뒤틀린 도시를 묘사합니다.