728x90
알고리즘 문제를 풀다보면 가끔 재귀함수 문제를 만나게 됩니다.
제 경험상 대부분을 재귀함수 문제들은 대부분 팩토리얼 관련된 문제로 접하였습니다.
재귀함수는 함수가 자기 자신을 호출하는 방법으로 동작을 합니다.
간단한 예제를 통해서 알아보도록 하겠습니다.
1) 아래 예제가 간단한 팩토리얼 예제 입니다.
// 팩토리얼(재귀함수) 알고리즘
public class RecursiveFactorial {
public static int factorial(int n) { //메인에있는 파라미터5를 입력 받음
//재귀함수 알고리즘
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
public static void main(String[] args) {
int number = 5;
int result = factorial(number);
System.out.println(number + "의 팩토리얼은 " + result + "입니다.");
}
}
사실 이 알고리즘이 이해가 안가시면은 손으로 코드를 쳐가면서, 그림을 그려보면서
진행을하면은 하나하나 이해가 될 것 입니다.
헷갈려하는 부분이 else에 return n * factorial(n-1) 이 부분인데 이 부분을 헷갈리지말고
피라미드를 그려보면서 하시면은 수월하게 문제를 풀 수 있을 것이라고 생각합니다.
1) factorial(5) = 5 * factorial(5-1) return
2) factorial(4) = 4 * factorial(4-1) return
3) factorial(4) = 3 * factorial(3-1) return
4) factorial(4) = 3 * factorial(2-1) return
5) factorial(1) = 1 return (조건만족 -> 1 return)
이런식으로 생각을 하면 편할 것 같습니다
728x90