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; } }