본문 바로가기

알고리즘/인프런

섹션 7. Recursive, Tree, Graph(DFS, BFS 기초) 3. 팩토리얼

문제

  • 자연수 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) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.