백준 BaekJoon Online Judge // 10872
2021. 1. 23. 18:15ㆍProgramming/BOJ
백준 알고리즘 BaekJoon Online Judge 10872번 "팩토리얼" 문제입니다.
def fac(N):
if N <= 1:
return 1
else:
return N * fac(N-1)
F = int(input())
print(fac(F))
팩토리얼 함수를 재귀함수로 짜는 문제다.
대학교의 코딩 기초 과목에서 항상 나오는 문제라고 생각한다.
그만큼 재귀함수는 꽤 유명하고 쓰이는 곳도 종종 있지만 성능과 난해할 수 있는 가독성 때문에 그렇게 좋은 방법이라고 생각하지는 않는다.
재귀함수는 탈출구가 항상 있어야 한다.
탈출 조건문이 없을 경우 함수는 끝나지 않고 함수 스택이 계속 쌓여서 스택 오버플로우가 날 수 있다.
따라서 N이 1이하 일때 return 1을 해줘서 탈출구를 마련해준후 나머지의 경우는 N*fac(N-1)을 리턴해줘서
N! = N*(N-1)*(N-2)*...*3*2*1의 과정을 수행할 수 있도록 해준다.
'Programming > BOJ' 카테고리의 다른 글
백준 BaekJoon Online Judge // 11729 (0) | 2021.01.25 |
---|---|
백준 BaekJoon Online Judge // 10870 (0) | 2021.01.25 |
백준 BaekJoon Online Judge // 3053 (0) | 2021.01.23 |
백준 BaekJoon Online Judge // 4153 (0) | 2021.01.23 |
백준 BaekJoon Online Judge // 3009 (0) | 2021.01.22 |