파이썬에서 사용하는 함수는 아니고요. 모든 프로그래밍 언어에서 함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출(recursive call)이라고 합니다. 재귀호출은 일반적인 상황에서는 잘 사용하지 않지만 알고리즘을 구현할 때 매우 유용합니다. 예를 들어서 DFS(깊이 우선 탐색) 이라던가 집합의 합이라던가 팩토리얼 등 다양한 곳에 사용을 할 수가 있습니다.
재귀함수 사용
간단하게 재귀호출 함수를 만들어 보겠습니다.
def hello():
print("Hello!!")
hello()
hello()
hello 함수 안에서 다시 hello 함수를 호출하고 있습니다. 소스 코드를 실행해보면 'Hello!!' 문자열이 계속 출력되다가 에러가 발생합니다. 이유는 파이썬에서 최대 재귀 깊이(maximum recursion depth)가 1000으로 정해져 있어서 그렇습니다. 즉, hello 함수가 자기 자신을 계속 호출하다가 최대 재귀 깊이를 초과하면 RecursionError 가 발생합니다.