반응형
문제
https://www.acmicpc.net/problem/27433
N!을 출력하면 되는데, 이제 재귀함수를 곁들이셔야 한다.
풀이
일단 여러분들, 재귀함수가 뭔가요? 그죠 내가 나를 부르고 나를 부르고 나를 부르고 부르고 부르고 하는 게 재귀함수 아닙니까. 그걸로 팩토리얼이 되냐고? 된다. 재귀함수 할 때 기본적으로 해 보는 두 개가 팩토리얼하고 피보나치 수열이다. 그래서 좀 해보신 분들한테는 되게 쉬운 문제다.
N = int(input())
# 팩도리얼을 재귀함수로 구현해보자...
# n! = n * (n-1) * (n-2) * ... * 1이다.
def factorial(N):
# 0! = 1
if N == 0:
return 1
# 재귀함수는 내가 나를 부르는 구조임을 잊지 맙시다.
else:
N *= factorial(N-1)
return N
print(factorial(N))
함수 안쪽에 있는 것까지 N으로 깔맞춤할 필요는 없다. 여기서 크게 신경써야 하는 두가지는 0!에 대한 처리랑 팩토리얼을 재귀함수로 구현하는건데, 0!은 1이기때문에 if문을 써서 0이 들어오면 1을 내놓거라 하면 되고, 나머지는 n! = n * (n-1) * (n-2) * ... * 1이니까 N * 팩토리얼(N-1) 하면 된다. 괄호 안쪽을 N-2로 수정하면 이중계승도 된다.
반응형
'BOJ > [BOJ] Python' 카테고리의 다른 글
| 백준 24723번 풀이 (0) | 2025.12.04 |
|---|---|
| 백준 15439번 풀이 (0) | 2025.12.03 |
| 백준 2566번 풀이 (0) | 2025.12.02 |
| 백준 13909번 풀이 (0) | 2025.12.01 |
| 백준 17103번 풀이 (0) | 2024.04.13 |
