반응형
문제
https://www.acmicpc.net/problem/10872
풀이
팩토리얼을 구하는 방법으로는 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문을 사용하여 아주 쉽게 풀 수 있지만, 재귀함수를 연습할 때 사용하면 좋을 것 같습니다.
저는 맨 처음 재귀함수를 공부할 때 이해하기가 힘들었습니다..(아직도 어려움..)
저도 계속해서 연습해야겠습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 25501 재귀의 귀재 (Swift) (0) | 2023.03.14 |
---|---|
[BOJ] 백준 10870 피보나치 수 5 (Swift) (0) | 2023.03.14 |
[BOJ] 백준 11478 서로 다른 부분 문자열의 개수 (Swift) (0) | 2023.03.14 |
[BOJ] 백준 1269 대칭 차집합 (Swift) (0) | 2023.03.14 |
[BOJ] 백준 1764 듣보잡 (Swift) (0) | 2023.03.14 |