더북(TheBook)

19.11 재귀 함수

함수에서 함수 자신을 호출하는 것을 재귀(recursion) 또는 재귀 함수라고 합니다.

이번에는 재귀 함수를 사용해 보겠습니다. 반복문에서 만들어 본 팩토리얼 문제를 재귀 함수를 사용하여 다시 만들어 보겠습니다. 다음 내용을 입력한 후 실행해 보세요. 재귀 함수 예제는 코드로 이해하기 어려우니 “부록 A. 디버거 사용하기”를 참고하여 F10 또는 F11을 여러 번 누르면서 하나씩 코드를 실행해 보길 권장합니다.

재귀 함수 사용: RecursionDemo.cs

using System;

class RecursionDemo
{
    static void Main()
    {
        //재귀 호출을 사용하여 팩토리얼 구하기: 4! = 4 * 3 * 2 * 1 = 24
        Console.WriteLine(4 * 3 * 2 * 1);
        Console.WriteLine(FactorialFor(4));
        Console.WriteLine(Factorial(4));
        Console.WriteLine(Fact(4));
    }

    //3항 연산자를 사용한 팩토리얼 구하기
    static int Fact(int n)
    {
        return (n > 1) ? n * Fact(n - 1) : 1;
    }

    //재귀 함수를 사용한 팩토리얼 함수 만들기: 재귀 함수는 트리 구조 탐색에 유리
    static int Factorial(int n)
    {

        //종료
        if (n == 0 || n == 1)
        {
            return 1;
        }
        return n * Factorial(n - 1); //재귀 호출
    }

    //단순한 팩토리얼은 이 방법이 좋음
    static int FactorialFor(int n)
    {
        int result = 1;
        for (int i = 1; i <= n; i++)
        {
            result *= i; //((((1 * 1) * 2) * 3) * 4)
        }
        return result;
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.