팩토리얼
문제
자연수 N이 입력되면 N!를 구하는 프로그램을 작성하세요. 예를 들어 5! = 54321=120입니다.
입력
첫 번째 줄에 자연수 N(1<=N<=10)이 주어집니다.
출력
첫 번째 줄에 N팩토리얼 값을 출력합니다.
입력예제
5
출력예제
120
해결방법
- return 구문에도 재귀 함수를 적용하여 푸는게 가능하다.
- 리턴이 거꾸로 올라오는 형태
코드
import java.util.*;
class Main {
public int DFS(int n) {
// 1! 이면 1이기 때문에 리턴한다.
if (n == 1) return 1;
// 1을 뺀 수를 파라미터로 하여 다시 재귀 호출 한다.
// 첫 5가 주어졌을 때, 리턴은 n * DFS(4) 인데 리턴이 되려면 계산이 되어야 하므로
// DFS(4)를 호출한다. 호출 구조를 보면 아래와 같이 된다.
// 5 * 4 -> DFS(4)
// 5 * 4 * 3 -> DFS(3) ...
// 즉, 팩토리얼 연산과 동일하다.
else return n * DFS(n - 1);
}
public static void main(String[] args) {
Main.Main T = new Main.Main();
System.out.println(T.DFS(5));
}
}