https://www.acmicpc.net/problem/10872
10872번: 팩토리얼
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
1. 팩토리얼의 정의 생각해보기
n!은 n부터 1까지의 곱
ex) 4! = 4 × 3 × 2 × 1
반복문으로 구현 가능하지만 이번에는 재귀로 구현해 보겠습니다.
재귀란 어떤 것을 정의할 때 자기 자신을 참조하는 것을 말합니다.
이 코드의 경우에는 factorial()함수 안에 다시 factorial()을 호출하는 것을 볼 수 있습니다.
이와 같이 함수 안에서 다시 자기 자신을 호출하는 함수를 재귀 함수라고 합니다.
1
2
3
4
5
6
7
|
def factorial(n):
if n == 1 or n == 0:
return 1
return n * factorial(n - 1)
n = int(input())
print(factorial(n))
|
cs |
0!과 1!은 1 임을 알아야 합니다. 그 외에 n은 n * factorial(n - 1)을 다시 호출해서 n - 1이 1이 될 때까지 재귀 호출합니다.
재귀를 처음 접해본 분이라면 한 번에 이해가 잘 안 될 수 있습니다. 천천히 그 과정을 종이에 써보거나 하면서 따라가 보면 이해가 더 쉬울 것입니다.
'BOJ(백준 문제풀이)' 카테고리의 다른 글
백준 2447 별 찍기10 solution[python, 파이썬] - 풀이, 설명::FBTT (1) | 2020.02.02 |
---|---|
백준 10870 피보나치 수 5 solution[python, 파이썬] - 풀이, 설명::FBTT (0) | 2020.01.30 |
백준 1929 소수 구하기 solution[python, 파이썬] - 풀이, 설명::FBTT (0) | 2020.01.29 |
백준 1002 터렛 solution[python, 파이썬] - 풀이, 설명::FBTT (0) | 2020.01.29 |
백준 3053 택시 기하학 solution[python, 파이썬] - 풀이, 설명::FBTT (0) | 2020.01.28 |