본문 바로가기

PS/백준

[BOJ] 백준 10872 팩토리얼 (Swift)

반응형

문제

https://www.acmicpc.net/problem/10872

 

10872번: 팩토리얼

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

풀이

팩토리얼을 구하는 방법으로는 for문, 재귀함수 등 으로 구현할 수 있습니다.

for문을 사용하면 단순히 1 ~ n 까지 곱해주면 되겠죠?

재귀함수로는 어떻게 풀 수 있을까요?

n이 0이나 1일때1을 return 해주고
n이 1보다 크다면 n * factorial 함수의 (n - 1)을 호출해주면 되겠죠??

예를들어 3! 을 구한다고 하면

n이 3이므로 3 * factorial(n: 2) 호출
n이 2이므로 2 * factorial(n: 1) 호출
n이 1이므로 1 return

factorial(n: 1)이 1이므로
n이 2일때는 2 * 1 return
따라서 factorial(n: 2) 는 2가 됩니다.

이제 factorial(n: 3) = 3 * factorial(n: 2) (2) 이므로
6이 리턴됩니다.

재귀함수는 Stack 자료구조와 유사하게, 계속해서 push 해주다가
값을 구할 수 있으면 그 값을 토대로 pop을 하여 해결하지 못했던 부분을 해결해줍니다.

소스코드

후기

재귀함수의 아주 기본적인 문제인 것 같습니다.
for문을 사용하여 아주 쉽게 풀 수 있지만, 재귀함수를 연습할 때 사용하면 좋을 것 같습니다.

저는 맨 처음 재귀함수를 공부할 때 이해하기가 힘들었습니다..(아직도 어려움..)
저도 계속해서 연습해야겠습니다.

반응형