https://www.acmicpc.net/problem/10872
문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.
출력
첫째 줄에 N!을 출력한다.
전체 코드
1. for문
N = int(input())
factorial = 1
for i in range(1, N + 1):
factorial *= i
print(factorial)
2. 재귀함수
N = int(input())
def factorial(n):
if n == 0:
return 1
if n == 1:
return 1
return n * factorial(n - 1)
print(factorial(N))
간단한 팩토리얼을 계산하는 문제입니다. 이 문제는 2가지 방식으로 풀 수 있는데, 첫 번째 방법은 for문으로, 두 번째 방법은 재귀함수로 풀 수 있습니다.
for문으로 푸는 방법은 i가 1부터 N까지 곱하면 되는 것이고, 재귀함수로 푸는 방법은 factorial이라는 함수를 일단 선언하고 n * factorial(n - 1)으로 반환합니다. 함수 안에서 자기 자신의 함수를 반환했으므로 재귀함수라고 할 수 있습니다. 그리고 n이 0일 때와 n이 1일때는 이 리턴 값과는 다른 값이 나오므로 1를 반환해줍니다.
'Algorithm 문제 풀이 > python' 카테고리의 다른 글
[python] 백준 9093번 단어 뒤집기 문제 풀이 (0) | 2022.06.16 |
---|---|
[python] 백준 10828번 스택 문제 풀이 (0) | 2022.06.15 |
[파이썬] 백준 2775번 (0) | 2022.03.06 |
[파이썬] 백준 1316번 (0) | 2022.03.03 |
[파이썬] 백준 10250번 (0) | 2022.02.28 |