문제
- 자연수 N이 입력되면 N!를 구하는 프로그램을 작성하세요.
- 예를 들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다.
입력
- 첫 번째 줄에 자연수 N(1<=N<=100)이 주어집니다.
출력
- 첫 번째 줄에 N팩토리얼 값을 출력합니다.
입출력 예제
풀이방식
이번 문제는 재귀함수를(을) 사용하여 푸는 문제이다.
재귀함수란 자기가 자기 자신을 호출하는 함수이며, 스택 프레임을 사용한다.
더 자세한 설명은 아래 글을 참조해서 확인해보기 바랍니다.
섹션 7. Recursive, Tree, Graph(DFS, BFS 기초) 6. 부분집합 구하기(DFS)
풀이과정
1. N이 1이면 1을 리턴한다.
- 1! 의 결과값이 1이기 때문이다.
2. 1이 아니라면 N * DFS(N-1)을 통해 재귀함수를 호출한다.
3. 위 과정을 통해 스택을 쌓는다.
4. DFS(1)이 1을 리턴받고 스택에서 pop() 된다.
5. DFS(2)로 복귀해서 2를 리턴받고 스택에서 pop() 된다.
6. 위 과정을 반복하여 결과를 출력한다.
해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.
'알고리즘 > 인프런' 카테고리의 다른 글
섹션 7. Recursive, Tree, Graph(DFS, BFS 기초) 5. 이진트리순회(DFS : Depth-First Search) (0) | 2022.11.15 |
---|---|
섹션 7. Recursive, Tree, Graph(DFS, BFS 기초) 4. 피보나치 재귀(메모이제이션) (0) | 2022.11.14 |
섹션 7. Recursive, Tree, Graph(DFS, BFS 기초) 2. 이진수 출력(재귀) (0) | 2022.11.09 |
섹션 7. Recursive, Tree, Graph(DFS, BFS 기초) 1. 재귀함수(스택프레임) (0) | 2022.11.06 |
섹션 6. Sorting and Searching(정렬, 이분검색과 결정알고리즘) 10. 마구간 정하기(결정알고리즘) (0) | 2022.11.05 |