반응형
문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/10872
10872번: 팩토리얼
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
import sys
N=int(sys.stdin.readline())
def factorial(num):
if(num==1 or num==0):
return 1
else:
return num*factorial(num-1)
print(factorial(N))
※ 재귀

● 0 팩토리얼 1 팩토리얼은 0 이므로 factorial() 함수에 들어온 매개변수 값이 1 또는 0 이면1을 return 해준다.
● 아니면 현재 num 값을 factorial(num-1) 값과 곱해준다. 이 때 재귀의 개념이 사용되게 된다.
* factorial(5)를 구하는 상황
-> 5 * factorial(4) 가 return
-> factorial(4) 는 4 * factorial(3) 이 return 되므로 쌓여있는 값은 5 * 4 * factorial(3)
-> factorial(3) 는 3 * factorial(2) 가 return 되므로 쌓여있는 값은 5 * 4 * 3 * factorial(2)
-> factorial(2) 는 2 * factorial(1) 가 return 되므로 쌓여있는 값은 5 * 4 * 3 * 2 * factorial(1)
-> factorial(1) 은 매개변수가 1이므로 그냥 숫자 1 return
-> 즉 최종 값은 5 * 4 * 3 * 2 * 1


반응형
'백준(baekjoon) > 브론즈' 카테고리의 다른 글
백준(baekjoon) 2750번: 수 정렬하기(브론즈 2, 파이썬 PYTHON) - 정렬 (0) | 2022.09.04 |
---|---|
백준(baekjoon) 2798번: 블랙잭(브론즈 2, 파이썬 PYTHON) - 브루트 포스 (0) | 2022.09.03 |
백준(baekjoon) 4344번: 평균은 넘겠지(브론즈 1, 파이썬 PYTHON) - 1차원 배열 (0) | 2022.08.30 |
백준(baekjoon) 3052번: 나머지 (브론즈 2, 파이썬 PYTHON) - 반복문 (0) | 2022.08.30 |
백준(baekjoon) 2439번: 별 찍기-2 (브론즈 4, 파이썬 PYTHON) - 반복문 (0) | 2022.08.30 |