함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라고 함.
재귀호출은 일반적인 상황에서는 잘 사용하지 않지만 고급 알고리즘을 구현할 때 유용하다고 함.
보통 알고리즘에 따라서 반복문으로 구현한 코드보다 재귀호출로 구현한 코드가 좀 더 직관적이고 이해하기 쉬운 경우가 많음.(많은 내공이 필요하다고 함.)
파이썬에서는 최대 재귀 깊이가 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))
약간 이런 느낌이라고 생각하면 된다.
함수에 또 함수를 걸어줘서 방이 하나 더 생긴다고 생각하면
이해하기가 쉬울 것이다. (악필 양해부탁)
'프로그래밍 > Python' 카테고리의 다른 글
Python - 파일 입출력 (0) | 2023.10.21 |
---|---|
Python - 피보나치 수열 (0) | 2023.10.14 |
Python - 모듈, 예외처리 (1) | 2023.10.14 |
Python - 개수 지정 없이 매개변수 전달 (0) | 2023.10.13 |
Python - Lambda함수 (0) | 2023.10.08 |