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;
        }
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.