코딩테스트

[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;
            }
        }
    }
}

 

반응형