import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int answer = factorial(n);
System.out.println(answer);
}
static int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
n이 20이면 결과값이 음수가 나온다.
이는 int의 범위를 초과했기 때문이다.
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
long answer = factorial(n);
System.out.println(answer);
}
static long factorial(long n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
자료형을 long으로 바꾸었더니 통과가 되었다.