본문으로 건너뛰기
실습하기

재귀 호출(recursive-call)이란?

재귀는 함수가 스스로를 호출하는 것을 뜻합니다. 주로 팩토리얼, 피보나치 수열 등 수학적 함수를 표현할 때 사용합니다.

팩토리얼 재귀 함수 예시
def factorial(n):
if n == 0: # 기저 조건
return 1 # 재귀 종료
else: # 재귀 호출
return n * factorial(n-1) # 자기 자신을 호출하면서 n-1을 인자로 전달

# 예시: 5의 팩토리얼 계산
factorial_result = factorial(5)

print("factorial_result:", factorial_result) # factorial_result: 120

재귀함수는 복잡한 문제를 간단하고 반복적인 문제로 나누어 해결하는 데 유용합니다.


기저 조건(Base Case)

모든 재귀 함수는 종료 조건, 즉 기저 조건이 필요합니다. 기저 조건은 재귀 호출이 끝나는 지점을 정의합니다.

예를 들어 위 factorial 함수에서 if n == 0은 재귀 함수를 종료하는 기저 조건입니다.

이 조건으로 인해 n이 0 이하가 되면 함수는 더 이상 자기 자신을 호출하지 않고 종료됩니다.


재귀 사용의 장단점

장점:

  1. 코드가 더 깔끔하고 이해하기 쉽습니다.

  2. 복잡한 문제를 간결하게 표현할 수 있습니다.

  3. 특히 자료구조와 알고리즘을 자연스럽게 구현할 수 있습니다.


단점:

  • 각 함수 호출마다 메모리를 사용하여, 메모리 사용이 더 많아질 수 있습니다.

  • 잘못 구현하면 무한 루프에 빠질 수 있습니다.