문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.
출력
첫째 줄에 N!을 출력한다.
예제 입력 1
10
예제 출력 1
3628800
예제 입력 2
0
예제 출력 2
1
재귀함수에 대한 문제다
반복문이 아닌 메서드를 활용하여 구현한다
풀이가 간단하여 바로 작성 코드로 넘어가겠다
import java.util.Scanner;
public class _10872_팩토리얼 {
public static int fac(int n) {
if(n==0) {
return 1;
} else {
return n*fac(n-1);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
System.out.println(fac(N));
}
}
fac이라는 함수를 만들어서
다시 자신을 부르도록 만든다
fac의 인자가 0일 경우, 1을 출력한다
나머지 경우에는 주어진 숫자*fac(n-1)을 출력한다
fac(n-1)은 n-1*fac(n-2)를 호출하고
이것이 반복되는게 재귀함수이다
예를 들어 N이 10일 경우
fac(10) = 10 * f(9)
= 10 * 9 * fac(8)
... 이렇게 반복된다
퍼가요~!@))))))))))