본문 바로가기

BOJ(백준 문제풀이)

백준 10872 팩토리얼 solution[python, 파이썬] - 풀이, 설명::FBTT

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)
 
= int(input())
print(factorial(n))
cs

 

0!과 1!은 1 임을 알아야 합니다. 그 외에 n은 n * factorial(n - 1)을 다시 호출해서 n - 1이 1이 될 때까지 재귀 호출합니다.

 

재귀를 처음 접해본 분이라면 한 번에 이해가 잘 안 될 수 있습니다. 천천히 그 과정을 종이에 써보거나 하면서 따라가 보면 이해가 더 쉬울 것입니다.