직접 재귀: 함수가 자신을 호출할 때 직접 재귀라고 하며 위에서 본 예제는 직접 재귀 예제입니다. 구조형 노드 데이터 구조는 재귀적으로 정의되므로 이에 대해 작동하는 프로시저를 재귀 프로시저로 자연스럽게 구현할 수 있습니다. 아래에 정의된 list_print 프로시저는 목록이 비어 있는 때까지 목록을 아래로 보웁니다(즉, 목록 포인터의 NULL 값). 각 노드에 대해 데이터 요소(정수)를 인쇄합니다. C 구현에서 목록은 list_print 프로시저에 의해 변경되지 않습니다. 아니요, n*f(n-1)의 첫 번째 함수 호출에서 승수 큐를 대기하기 때문입니다. 따라서 n이 마지막으로 <= 1이되면 이전의 함수 호출로 반환됩니다. 따라서 n* f(n-1) 대신 n* 1이 됩니다. 여기에서 n의 이전 값을 모두 저장하고 방정식을 해결합니다. 단락은 트리의 Null 포인터와 같이 많은 기본 사례가 발생할 때 주로 우려되는 데, 이는 함수 호출 수에 선형일 수 있으므로 O(n) 알고리즘에 대한 상당한 절감 효과를 볼 수 있습니다.

이것은 깊이 우선 검색을 위해 아래에 설명되어 있습니다. 트리의 단락은 빈 노드를 기본 대/소문자로 간주하는 대신 리프(자식이 없는 빈 노드가 아닌 노드)를 기본 사례로 고려하는 것과 같습니다. 계수를 계산하는 것과 같은 단일 기본 케이스만 있는 경우 단락은 O(1) 절감만 제공합니다. 개념적으로 단락은 동일한 염기 케이스 및 재귀 단계를 가지거나 재귀 전에 기본 케이스만 확인하거나 다른 기본 케이스(표준 기본 케이스에서 제거된 한 단계)를 가지는 것으로 간주될 수 있습니다. Null 노드가 아닌 리프 노드를 트리의 기본 사례로 고려할 때와 같이 재귀 단계, 즉 “유효한 다음 재귀 확인”을 고려합니다. 단락은 표준 재귀에서 베이스 케이스와 재귀 단계의 명확한 분리와 비교하여 더 복잡한 흐름을 가지므로 특히 학계에서 좋지 않은 스타일로 간주됩니다. [10] 반복 프로그래밍보다 재귀 프로그래밍의 장점은 무엇입니까? 재귀는 코드를 작성하는 깔끔하고 간단한 방법을 제공합니다.