본문 바로가기
IT/c언어

C 언어 재귀 함수 (Recursive Function)

by 뉴코딩맨 2023. 7. 12.
재귀 함수는 자기 자신을 호출하는 함수로, 문제를 더 작은 하위 문제로 분할하여 해결하는 기법입니다. 재귀 함수를 사용하면 복잡한 문제를 간단하고 우아하게 해결할 수 있습니다.

 

 

재귀 함수의 구조

재귀 함수는 다음과 같은 구조를 갖습니다.
 
void recursiveFunction(...){
    if (base condition){
        // 재귀 종료 조건
        // 기저 케이스
        return;
    }
    else{
        // 재귀 호출
        recursiveFunction(...);
        // 추가적인 연산
    }
}
 
재귀 함수는 재귀 종료 조건을 확인한 후에 자기 자신을 호출하고, 추가적인 연산을 수행합니다. 재귀 종료 조건은 함수가 무한히 호출되는 것을 방지하기 위해 필요합니다.
 

재귀 함수의 예시

다음은 팩토리얼을 계산하는 재귀 함수의 예시입니다.
 
int factorial(int n){
    // 재귀 종료 조건
    if (n == 0 || n == 1){
        return 1;
    }
    else{
        // 재귀 호출
        return n * factorial(n - 1);
    }
}
 
위의 예시에서 factorial 함수는 입력된 수의 팩토리얼 값을 계산합니다. 재귀 호출을 통해 자기 자신을 호출하고, 입력된 수를 1씩 줄여가며 팩토리얼 값을 계산합니다. 재귀 종료 조건은 n이 0 또는 1일 때입니다.
 
 

재귀 함수의 활용 예시

재귀 함수는 다양한 문제에서 사용될 수 있습니다. 예를 들어, 피보나치 수열, 이진 트리 순회, 하노이의 탑 등 다양한 알고리즘과 문제 해결에 적용될 수 있습니다. 재귀 함수를 사용하면 복잡한 문제를 간단한 단계로 분할하여 해결할 수 있습니다.
 

재귀 함수의 장단점

장점

복잡한 문제를 간결하고 우아하게 해결할 수 있습니다.
코드의 가독성과 유지보수성이 향상됩니다.
재귀적 사고를 통해 문제를 해결하는 능력이 향상됩니다.

 

단점

재귀 함수는 호출할 때마다 함수의 상태를 스택에 저장하므로 메모리 사용량이 증가할 수 있습니다.
깊은 재귀 호출이 발생할 경우 스택 오버플로우(Stack Overflow) 오류가 발생할 수 있습니다.

 

결론

재귀 함수는 자기 자신을 호출하는 함수로, 복잡한 문제를 간단하고 우아하게 해결하는 데에 사용됩니다. 재귀 함수는 재귀 종료 조건을 갖추고, 문제를 작은 하위 문제로 분할하여 해결합니다. 재귀 함수의 활용은 알고리즘 및 문제 해결에 있어서 중요한 개념입니다.

 

 

C 언어 레지스터 변수(Register Variable)

레지스터 변수는 C 언어에서 사용되는 변수의 한 종류입니다. 레지스터 변수는 변수를 레지스터에 저장할 수 있다는 것을 컴파일러에게 알리는 역할을 합니다. 컴파일러는 이 힌트를 참고하여

newcodingman.tistory.com

 

'IT > c언어' 카테고리의 다른 글

C 언어 널 문자 (Null Character)  (0) 2023.07.12
C 언어 배열 (Array)  (0) 2023.07.12
C 언어 레지스터 변수(Register Variable)  (0) 2023.07.11
C 언어 정적 변수(Static Variable)  (0) 2023.07.11
C 언어 전역 변수(Global Variable)  (0) 2023.07.11

댓글