C#/함수

[C#] 재귀함수(Recursion)

도도돋치 2025. 4. 17. 14:36
Contents 접기
728x90

 

1. 재귀함수란?

함수 내부에서 자기 자신을 다시 호출하는 함수를 말한다.
복잡한 문제를 더 작은 문제로 나누어 해결할 때 유용하다.

 

void SayHello(int count) {
    if (count == 0) return;
    Console.WriteLine("안녕하세요!");
    SayHello(count - 1);  // 자기 자신 호출
}

 

 

2. 재귀함수의 구조

모든 재귀함수는 두 가지 구조를 갖는다.

  • 기저 조건(Base Case): 재귀를 멈추는 조건
  • 재귀 호출(Recursive Call): 자신을 다시 호출하는 부분
int Factorial(int n) {
    if (n == 1) return 1;         // 기저 조건
    return n * Factorial(n - 1);  // 재귀 호출
}

 

 

3. 재귀함수 예시

 

📝팩토리얼

int Factorial(int n) {
    if (n <= 1) return 1;
    return n * Factorial(n - 1);
}

Console.WriteLine(Factorial(5)); // 출력: 120

 

📝피보나치 수열

int Fibonacci(int n) {
    if (n <= 1) return n;
    return Fibonacci(n - 1) + Fibonacci(n - 2);
}

 

📝폴더/트리 구조 탐색 등에도 사용된다 (깊이우선 탐색 등)

 

 

📖 정리

✓ 재귀함수는 자기 자신을 다시 호출하는 함수
✓ 반드시 종료 조건(기저 조건)이 있어야 무한 호출을 방지할 수 있음
✓ 반복문으로도 구현 가능한 문제지만, 재귀를 쓰면 코드를 간결하게 표현할 수 있음
✓ 단점: 호출이 많아지면 스택 오버플로우가 발생할 수 있음
✓ 재귀는 이해가 어려울 수 있으므로 시각화나 디버깅으로 흐름을 확인하는 것이 좋음

 

 

728x90

'C# > 함수' 카테고리의 다른 글

[C#] ref, out  (0) 2025.04.17
[C#] 메서드 오버로딩(Method Overloading)  (5) 2025.04.17
[C#] 매개변수  (0) 2025.04.17
[C#] 함수 개념  (0) 2025.04.16