🖥️ IT, 컴퓨터/🐍 Python

[Python] 재귀함수(Recursion)

김 홍시 2024. 1. 17.
반응형

파이썬에서 재귀함수는 자기 자신을 호출하는 함수입니다. 이는 많은 프로그래밍 문제, 특히 그 문제가 자연스럽게 작은 부분 문제로 나뉠 수 있을 때, 효과적인 해결 방법을 제공합니다. 재귀함수의 기본 구조는 대개 두 부분으로 나뉩니다:

  1. 기저 조건(Base Case): 재귀 호출을 중단하는 조건입니다. 이는 무한 루프에 빠지지 않도록 방지하며, 일반적으로 가장 간단하거나 미니멈 케이스에 해당합니다.
  2. 재귀 단계(Recursive Case): 함수가 자기 자신을 호출하며 문제를 더 작은 부분으로 나누는 과정입니다.

재귀함수의 예시

간단한 예로, 팩토리얼을 계산하는 재귀함수를 들 수 있습니다:

def factorial(n):
    # 기저 조건: n이 1 이하일 때, 1을 반환
    if n <= 1:
        return 1
    # 재귀 단계: n * factorial(n-1)
    else:
        return n * factorial(n - 1)

여기서 factorial(n-1)이 재귀 호출 부분입니다. n이 1 이하일 때 기저 조건에 도달해 재귀 호출이 종료됩니다.

재귀함수의 주의점

  • 스택 오버플로: 재귀함수는 각 호출마다 함수의 상태를 스택 메모리에 저장합니다. 호출이 너무 많으면 메모리를 과도하게 사용하여 스택 오버플로 오류가 발생할 수 있습니다.
  • 성능 문제: 재귀함수는 간결하고 이해하기 쉽지만, 때로는 반복문을 사용하는 것보다 덜 효율적일 수 있습니다. 특히 같은 계산을 반복적으로 수행해야 하는 경우에는 성능이 떨어질 수 있습니다.
  • 종료 조건: 재귀함수는 반드시 종료 조건을 명확히 해야 합니다. 그렇지 않으면 무한 재귀에 빠질 수 있습니다.

재귀함수는 프로그래밍에서 매우 강력한 도구지만, 사용할 때는 주의를 기울여야 합니다. 올바른 경우에 적절하게 사용하면 많은 문제를 효율적으로 해결할 수 있습니다.

반응형

댓글