반응형
풀이
1. int형의 범위를 넘어서기 때문에 long 타입으로 풀어야함.
2. 0! 는 1이다.
import java.util.Scanner;
public abstract class Main{
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
long num = sc.nextLong();
// 0! = 1
if (num == 0) {
System.out.println(1);
} else {
long sum = fatorial(num);
System.out.println(sum);
}
}
static long fatorial(long num){
if (num == 1) {
return 1;
} else {
return num * fatorial(num-1);
}
}
}
num
|
num-1
|
sum
|
10
|
9
|
10*fatorial(9)
|
9
|
8
|
10*9*fatorial(8)
|
8
|
7
|
10*9*8*fatorial(7)
|
7
|
6
|
10*9*8*7*fatorial(6)
|
6
|
5
|
10*9*8*7*6*fatorial(5)
|
5
|
4
|
10*9*8*7*6*5*fatorial(4)
|
4
|
3
|
10*9*8*7*6*5*4*fatorial(3)
|
3
|
2
|
10*9*8*7*6*5*4*3*fatorial(2)
|
2
|
1
|
10*9*8*7*6*5*4*3*2*fatorial(1)
|
1
|
return 1
|
3628800
|
반응형
'알고리즘 > 구현 & 그리디 & 브루트포스' 카테고리의 다른 글
[백준]JAVA - 13305번: 주유소 (0) | 2022.09.16 |
---|---|
[백준]JAVA - 1931번: 회의실 배정 (0) | 2022.09.16 |
[백준]JAVA - 1541번: 잃어버린 괄호 (0) | 2022.09.15 |
[백준]JAVA - 2309번: 일곱 난쟁이 (0) | 2022.09.13 |
[백준]JAVA - 10546번: 배부른 마라토너 (0) | 2022.09.08 |