코딩테스트
[JAVA] 팩토리얼 구하기 (재귀, 메모화)
dackyy
2022. 7. 23. 19:04
반응형
import java.util.HashMap;
import java.util.Scanner;
public class Factorial {
static int factorial(int n) {
if(n > 0)
return n * factorial(n - 1);
else
return 1;
}
public static void main(String[] args) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int x = sc.nextInt();
System.out.println(x + "의 팩토리얼은 "+ factorialMemoization(x, map)+"입니다");
System.out.println(x + "의 팩토리얼은 "+ factorial(x)+"입니다");
}
static int factorialMemoization(int num, HashMap map){
if(map.containsKey(num)){
return (int) map.get(num);
}else{
if(num > 0){
int temp = num * factorial(num - 1);
map.put(num, temp);
return temp;
}else{
return 1;
}
}
}
}
반응형