728x90
반응형
SMALL

재귀 함수는 함수가 자기 자신을 호출하는 것을 말한다.

재귀 함수는 다음과 같은 특징을 가지고 있다:

  1. 기본 케이스 (Base Case): 재귀 함수는 반드시 종료 조건을 가져야 한다. 이 종료 조건을 만족할 때는 자기 자신을 호출하지 않고 함수를 종료한다. 기본 케이스는 재귀 호출을 멈추고 원하는 결과를 반환하는 부분이다.
  2. 재귀 케이스 (Recursive Case): 기본 케이스가 아닌 경우, 재귀 함수는 자기 자신을 한 번 이상 호출한다. 이때 함수의 인자 또는 상태를 조정하여 재귀 호출을 계속 진행하게 된다.

재귀 함수는 복잡한 문제를 간결하게 해결할 수 있는 장점이 있다.

예시 1: 팩토리얼 계산

int factorial(int n) {
    if (n == 0) {
        return 1;  // 기본 케이스: 0!은 1이다.
    } else {
        return n * factorial(n - 1);  // 재귀 케이스: n! = n * (n-1)!
    }
}

예시 2: 피보나치 수열

int fibonacci(int n) {
    if (n <= 1) {
        return n;  // 기본 케이스: 0번째와 1번째 수는 그대로 반환한다.
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);  
// 재귀 케이스: n번째 수 = (n-1)번째 수 + (n-2)번째 수
    }
}

재귀 함수는 재귀 호출을 통해 문제를 작은 조각으로 나누고 해결한다. 하지만 잘못 사용하면 무한 재귀에 빠질 수 있으므로, 종료 조건을 정확하게 설정하고 적절히 활용해야 한다. 또한, 재귀 함수는 반복적인 호출을 많이 사용하므로 성능에 주의해야 한다.

[data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2738%27%20height=%2738%27/%3e](data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2738%27%20height=%2738%27/%3e)

728x90
반응형
LIST

'CS > 알고리즘' 카테고리의 다른 글

해싱(Hashing)  (0) 2023.05.30
이진 검색(Binary Search)  (0) 2023.05.30
선형 검색(Linear Search)  (0) 2023.05.30
너비 우선 탐색(BFS)  (0) 2023.05.30
최소 힙(Minimum Heap)  (0) 2023.05.29

+ Recent posts