함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라고 함.

재귀호출은 일반적인 상황에서는 잘 사용하지 않지만 고급 알고리즘을 구현할 때 유용하다고 함.

보통 알고리즘에 따라서 반복문으로 구현한 코드보다 재귀호출로 구현한 코드가 좀 더 직관적이고 이해하기 쉬운 경우가 많음.(많은 내공이 필요하다고 함.)

파이썬에서는 최대 재귀 깊이가 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

+ Recent posts