프로그래밍/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))

약간 이런 느낌이라고 생각하면 된다.

함수에 또 함수를 걸어줘서 방이 하나 더 생긴다고 생각하면 

이해하기가 쉬울 것이다. (악필 양해부탁)