ex)
def countdown(n):
if n > 0:
print(n)
countdown(n - 1)
countdown(4)
# 4
# 3
# 2
# 1
➡ 재귀적으로 문제를 푼다는 것
= 같은 형태의 더 작은 문제(부분 문제)를 풀고 부분 문제의 답을 이용해서 기존 문제를 푸는 것
n = 0인 경우 n! = 1 # base case
n > 0인 경우 n! = (n-1)! * n # recursive case
재귀적으로 문제를 풀 때는 항상
base case
와recursive case
를 모두 생각해내야 함
def factorial(n):
if n == 0:
return 1
return factorial(n-1) * n
print(factorial(4))
# 24
StackOverflowError
재귀 함수 호출이 너무 많으면 call stack이 많아지고 결국 과부하로 프로그램 중단