재귀를 이해하려면 재귀를 이해해야 합니다...
반복
프로그래밍 — 넓은 의미에서 – 자체 호출로 이어지지 않고 작업이 여러 번 반복되는 데이터 처리 조직( %BA%D1%83%D1%80%D1%81%D0%B8%D1%8F" title="Recursion" >재귀). 좁은 의미에서 — 한 단계 순환 데이터 처리 프로세스.
종종 현재 단계(반복)의 반복 알고리즘은 이전 단계에서 계산된 동일한 작업 또는 작업의 결과를 사용합니다. 이러한 계산의 한 예는 순환 관계의 계산입니다.
재귀 값의 간단한 예는 계승입니다.
\(N!=1 \cdot 2 \cdot 3 \cdot \ ... \ \ \cdot N\)
각 단계(반복)에서의 값 계산은
\(N=N \cdot i\) 입니다.
\(N\) 값을 계산할 때 이미 저장된 값
\(N\).< br />
숫자의 계승은
반복 공식
을 사용하여 설명할 수도 있습니다.
이 설명이 재귀 함수에 불과하다는 것을 알 수 있습니다.
여기서 첫 번째 줄(
\(n <= 1\)) — 이것은 기본 케이스(재귀의 종료 조건)이고 두 번째 줄은 다음 단계로의 전환입니다.
<몸>
재귀 계승 함수는 다음과 같습니다. |
일반적인 비재귀적 방식으로 계승을 찾는 알고리즘 비교 |
int 팩토리얼(int n){
if (n > 1)
return n * 계승(n - 1);
그렇지 않으면 1을 반환합니다.
}
|
x = 1;
for (i = 2; i <= n; i++)
x = x * i;
printf("%d",x);
|
테이블>
함수 호출에는 약간의 추가 오버헤드가 포함되므로 비재귀 요인 계산이 약간 더 빠릅니다.
결론: 재귀 없이 간단한 반복 알고리즘으로 프로그램을 작성할 수 있는 경우 재귀 없이 작성해야 합니다. 그러나 여전히 계산 프로세스가 재귀에 의해서만 구현되는 많은 종류의 문제가 있습니다.
반면에 재귀 알고리즘은 종종 더 이해하기 쉽습니다.
다음 정보가 유용할 수 있습니다.
영문자 '\(A\)' 코드 65
입장
\(char \ c = 65;\) 변수 \(c\)에 영문자를 저장합니다. 스팬> \(A\)
따라서 코드로 원하는 문자를 얻을 수 있습니다.
|