문제 번호 27433번 : 팩토리얼 2 - JAVA [자바]
728x90
https://www.acmicpc.net/problem/27433
문제 설명
재귀를 이용하여 팩토리얼을 구현하는 문제입니다.
문제 풀이
사실 재귀를 이용해 팩토리얼을 구현하는 것은 어렵지 않습니다.
하지만 이 문제에는 함정이 있습니다. n이 0부터 20까지 라는 것입니다.
얼핏 보면 숫자가 작아보이지만 팩토리얼로 계산하면 굉장히 큰 숫자가 됩니다.
그래서 자료형을 int가 아닌 long으로 해주어야 합니다.
import java.util.Scanner;
public class Number_27433 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long n = sc.nextInt();
System.out.println(factorial(n));
}
public static long factorial(long n){
if(n==0) return 1;
else if(n==1) return n;
else return factorial(n-1)*n;
}
}
재귀는 5를 입력했을 경우 5,4,3,2,1로 입력되고 factorial(1)*2 -> factorial(2)*3 -> factorial(6)*4 -> factorial(24)*5 -> 120 이 도출 됩니다.
'알고리즘 > 백준 문제 및 정답' 카테고리의 다른 글
문제 번호 5086번 : 배수와 약수 - JAVA [자바] (0) | 2023.04.09 |
---|---|
문제 번호 27433번 : 칸토어 집합 - JAVA [자바](파일의 끝에서 입력을 멈춘다.) (0) | 2023.03.31 |
문제 번호 11729번 : 하노이 탑 이동 순서 - JAVA [자바] (0) | 2023.03.30 |
문제 번호 2447번 : 별 찍기 - JAVA [자바] (0) | 2023.03.29 |
문제 번호 18870번 : 좌표 압축 - JAVA [자바] (0) | 2023.03.09 |