재귀(Recursion)는 함수가 자신을 호출하는 프로그래밍 기법입니다. 복잡한 문제를 해결할 때 문제를 작게 쪼개고, 이를 반복적으로 해결하는 방식으로 작동합니다. 재귀는 특히 구조적으로 반복이 필요한 문제를 간결하게 표현할 수 있는 장점이 있습니다.
재귀의 주요 구성 요소
재귀의 특징
재귀를 사용하는 것은 문제를 간결하고 직관적으로 표현할 수 있는 장점이 있지만, 주의할 점도 있습니다.
재귀의 장점
재귀의 단점
분할정복은 문제를 더 작은 하위 문제로 나눈 뒤, 각각을 재귀적으로 해결하고 그 결과를 합쳐 전체 문제를 해결하는 전략입니다. 주로 정렬 알고리즘(예: 병합 정렬, 퀵 정렬)에서 사용됩니다.
분할정복의 3단계
분할정복이 사용되는 알고리즘 예시
문제 설명: 정수 n이 주어졌을 때, n! (팩토리얼)을 재귀를 사용해 계산하는 함수를 작성하세요.
Python 코드 예제:
def factorial(n):
if n == 1: # 기저 조건
return 1
return n * factorial(n - 1) # 재귀 호출
print(factorial(5)) # 출력: 120
설명: factorial
함수는 n == 1
일 때 재귀 호출을 종료하며, 이를 기저 조건으로 설정합니다. 이후 n * factorial(n - 1)
을 반복하며 결과를 계산합니다.
이번 글에서는 재귀와 분할정복의 개념을 배우고 재귀적 사고 방식을 익혔습니다. 재귀를 이해하면 복잡한 문제를 더 작은 문제로 분할하여 접근할 수 있습니다. 다음 주제에서는 이러한 접근 방식을 다양한 문제에 적용해 보겠습니다.