ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • section7.1
    알고리즘 2025. 8. 30. 19:40
    재귀함수
    자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지를 출력하는 프로그램을 작성하세요
    
    입력설명
    첫 번째 줄은 정수 N(3<=N<=10)이 입력된다
    
    출력설명
    첫째 줄에 출력한다
    
    입력예제 1
    3
    
    출력예제 1
    1 2 3

     

     

     

    ANSWER

    public class Question1 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            for (int x : solution(n)) {
                System.out.print(x + " ");
            }
        }
    
        public static int[] solution(int n) {
            int[] answer = new int[n];
            int idx = 0;
    
            while (idx < n) {
                System.out.println("idx : " + idx);
                tmpFun(idx+1, answer);
                idx ++;
            }
    
            return answer;
        }
    
        private static void tmpFun(int idx, int[] arr) {
            arr[idx-1] = idx;
        }
    }
    • 문제 자체가 쉬워서 금방 풀긴 했는데 tmpFun이라는 게 재귀 함수인지는 모르겠다 
    • 재귀함수라는 건 return에 동일한 메서드를 return 해서 만들던데... 재귀함수라는 것 자체에 대한 개념이 부족한 것 같다

     

     

     

    SOLUTION

    public class Answer1 {
        public static void main(String[] args) {
            // 재귀함수 > 자기 자신을 호출하는 함수
            Answer1 T = new Answer1();
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            T.DFS(n);
        }
    
        public void DFS(int n) {
            if (n == 0) {
                return;
            } else {
                DFS(n-1);
                // DFS(3) > DFS(2) 호출 > DFS(1) 호출 > ...
                // 반복문의 형태
                System.out.print(n + " ");
            }
        }
    }

     

     

     

    DFS() 호출하고 아래에 print를 했을 때 왜 1 2 3 이 순서로 나오는지 이해가 안 갔는데 함수가 호출될 때마다 스택으로 쌓이고 호출이 끝나면 스택에서 하나씩 꺼내서 실행하니 순서대로 나오는 것이었다

    이해는 가지만 익숙하지 않아 여러 번 반복해야할 듯 

    728x90

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

    section7.3  (0) 2025.08.30
    section7.2  (0) 2025.08.30
    section6.9  (1) 2025.08.26
    section6.8  (0) 2025.08.26
    section6.7  (1) 2025.08.26
Designed by Tistory.