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