티스토리 뷰

 

10872번: 팩토리얼

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

www.acmicpc.net

 

문제

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

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력

첫째 줄에 N!을 출력한다.

예제 입력 1 복사

10

예제 출력 1 복사

3628800

예제 입력 2 복사

0

예제 출력 2 복사

1

알고리즘 분류


코드

# [백준 10872번] - 팩토리얼 - (실버4, 스택)

def factorial(n: int) -> int:
    """양의 정수 n의 팩토리얼값을 재귀적으로 구함"""
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

if __name__ == '__main__':
    n = int(input())
    print(factorial(n))

문제접근

factorial(): n * factorial(n-1)의 값을 반환

문제풀이

n = 5 이면
factorial(5) = 5 * factorial(4), 즉 (5 * 4)
factorial(4) = 4 * factorial(3), 즉 (4 * 3)
factorial(3) = 3 * factorial(2), 즉 (3 * 2)
factorial(2) = 2 * factorial(1), 즉 (2 * 1)
factorial(1) = 1 * factorial(0), 즉 (1 * 1)

factorial(5) = 5 * 4 * 3 * 2 * 1 = 120