프로그래밍/Python
Python - 재귀함수
머성암
2023. 10. 14. 21:02
함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라고 함.
재귀호출은 일반적인 상황에서는 잘 사용하지 않지만 고급 알고리즘을 구현할 때 유용하다고 함.
보통 알고리즘에 따라서 반복문으로 구현한 코드보다 재귀호출로 구현한 코드가 좀 더 직관적이고 이해하기 쉬운 경우가 많음.(많은 내공이 필요하다고 함.)
파이썬에서는 최대 재귀 깊이가 1000으로 정해져 있어 그 이상 호출 시 RecursionError가 발생
재귀호출을 사용하려면 반드시 종료 조건을 만들어줘야함.
예시1
def say_hello(depth):
if depth == 0:
return
else:
print("안녕하세요!", depth)
depth -= 1
say_hello(depth) #재귀호출
say_hello(5)
예시2
def factorial(n):
print(f"factorial({n}) was called")
if n == 1:
return 1 #종료조건
else:
return n * factorial(n - 1) # 재귀호출
print("final value is", factorial(5))
약간 이런 느낌이라고 생각하면 된다.
함수에 또 함수를 걸어줘서 방이 하나 더 생긴다고 생각하면
이해하기가 쉬울 것이다. (악필 양해부탁)