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