ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • section7.3
    알고리즘 2025. 8. 30. 20:49
    팩토리얼
    자연수 N이 입력되면 N!를 구하는 프로그램을 작성하세요
    예를 들어 5! = 5*4*3*2*1=120 입니다
    
    입력설명
    첫 번째 줄에 자연수 N(1<=N<=10)이 주어집니다
    
    출력설명
    첫 번째 줄에 N 팩토리얼 값을 출력합니다
    
    입력예제 1
    5
    
    출력예제 1
    120

     

     

     

    ANSWER

    package practice.section7;
    
    public class Question3 {
        public static void main(String[] args) {
            int[] arr = new int[5];
            factoryFunc(5, arr);
        }
        public static void factoryFunc(int n, int[] arr) {
            if (n == 0) {
                int sum = 1;
                for (int x : arr) {
                    sum = sum * x;
                }
                System.out.println(sum);
                return;
            } else {
                factoryFunc(n-1, arr);
                arr[n-1] = n;
            }
        }
    }

    • 이렇게 코드를 짰을 때 왜 마지막 n == 0 일 때 arr에 [0,0,0,0,0]인지 이해가 안 갔는데 마찬가지로 스택으로 쌓이고 위에서부터 호출되니까 안되는 거였다

     

     

    public class Question3 {
        public static void main(String[] args) {
            System.out.println(factoryFuncV2(5));
        }
        public static int factoryFuncV2(int n) {
            if (n == 0) return 1;
            return n * factoryFuncV2(n-1);
        }
    }
    • 마지막 return에 곱셈으로 바꿔주니 올바른 값이 나온다

     

     

     

    SOLUTION

    public class Answer3 {
        public static void main(String[] args) {
            Answer3 T = new Answer3();
            System.out.println(T.DFS(5));
        }
    
        public int DFS(int n) {
            if (n == 1) return 1;
            else return n * DFS(n-1);
        }
    }
    728x90

    '알고리즘' 카테고리의 다른 글

    section7.5  (0) 2025.09.02
    section7.4  (1) 2025.08.30
    section7.2  (0) 2025.08.30
    section7.1  (0) 2025.08.30
    section6.9  (1) 2025.08.26
Designed by Tistory.