Skip to content

[백준] 10872. 팩토리얼

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


팩토리얼은 1부터 자기 자신까지의 모든 수를 곱한 결과를 말하며, 0!은 별도로 1로 정의한다. 문제의 취지를 생각하면 아래와 같이 재귀함수로 풀어내는 방법이 있다.

def fac(n):
    return 1 if n <= 1 else n * fac(n - 1)


print(fac(int(input())))

문제는 Python은 꼬리재귀 최적화를 지원하지 않고, 따로 설정하지 않는다면 꼬리재귀는 최대 1000 단계까지만 스택할 수 있다. 따라서 만약 실무에서 사용할 일이 있다면 아래와 같이 반복문으로 처리하는 편이 더 좋다.

a, r = int(input()), 1
for i in range(1, a + 1):
    r *= i

print(r)

Reference