알고리즘

[DFS,BFS 기초] 팩토리얼

kimkim615 2025. 1. 18. 17:34

문제

자연수 N이 입력되면 N!를 구하는 프로그램을 작성하세요.

예를 들어 5! = 5*4*3*2*1=120입니다.

 

입력설명

첫 번째 줄에 자연수 N(1<=N<=100)이 주어집니다.

 

출력설명

첫 번째 줄에 N 팩토리얼 값을 출력합니다.

 

입력예제 1

5

 

출력예제 1

120

 


 

 

if(n==1) 이면 1 리턴하고

그게 아니면 n*DFS(n-1) 라는 재귀함수를 리턴한다

 

DFS(5)는 5*DFS(4)를 리턴받음 

DFS(4)는 4*DFS(3)를 리턴받음

DFS(3)는 3*DFS(2)를 리턴받음

DFS(2)는 2*DFS(1)를 리턴받음

DFS(1)은 1을 리턴받음

 

그러면 스택이니까 DFS(1)이 먼저 POP되고 그 다음은 맨 상단에 있는 DFS(2) -> DFS(3) -> DFS(4) -> DFS(5)

이렇게 차례대로 리턴 받는다 

그래서 최종적으로 120이 나온다