재귀(Recursion)는 자기 자신을 호출하는 함수나 알고리즘의 과정을 말합니다. 재귀는 다음과 같은 경우에 사용됩니다.
- 하위 문제가 상위 문제와 동일한 구조를 가지는 경우
- 주어진 문제를 하위 문제로 쪼갤 수 있는 경우
재귀적인 알고리즘은 주어진 문제를 여러 하위 문제로 분할한 다음, 이를 해결하여 최종적인 답을 얻어냅니다. 재귀적인 알고리즘은 종료 조건을 만족할 때까지 하위 문제를 계속해서 호출합니다. 이 때 종료 조건을 만족하지 않으면 무한히 재귀호출이 일어나서 스택오버플로우(Stack Overflow)와 같은 문제가 발생할 수 있습니다.
재귀적인 알고리즘은 명확하고 간결한 코드를 작성할 수 있으며, 복잡한 문제를 해결할 수 있습니다. 그러나 스택 오버플로우 문제와 같은 위험성이 있으므로, 재귀적인 알고리즘을 구현할 때는 종료 조건을 명확하게 설정하고, 호출 스택의 크기를 고려해야 합니다.