[Java] 재귀 메소드

DEVELOPERS_Ivan ㅣ 2024. 4. 3. 17:25

목차
- Q1_재귀 메소드에 대한 설명

- Q1_재귀 메소드에 대한 설명

더보기

A. 재귀 메소드(Recursive Method), 스스로를 호출하는 메소드로 각 호출마다 메모리 스택에 새로운 레이어(컨텍스트)를 추가합니다. 성능 측면에서는 올바르게 사용되면 매우 효율적이고 강력하지만, 잘못 사용될 경우 성능 문제를 일으킬 수 있습니다. 재귀를 사용할 때는 기저 조건을 명확히 정의하고 재귀에 깊이에 주의를 기울여야 합니다. 또한 꼬리 재귀 최적화를 활용하여 성능을 개선할 수도 있습니다.

 

- 장점 
  - 재귀 메소드는 복잡한 문제를 간결하고 이해하기 쉬운 방식으로 표현할 수 있습니다.
  - 큰 문제를 작은 하위 문제로 나누어 해결하는 분할 정복방식에 적합합니다.
  - 트리나 그래프 같은 데이터 구조를 탐색하거나 조작할 때 재귀가 유용합니다.

- 단점
   - 재귀 호출은 추가적인 메모리(스택 메모리)를 사용하며, 함수 호출에 따른 오버헤드가 발생합니다.
      많은 수의 재귀 호출이 발생하면 스택 오버플로우 에러를 일으 킬 수 있습니다.
   - 재귀 로직은 특히 초기 프로그래밍 학습시 이해하기 어려 울 수 있으며, 디버깅이 복잡할 수 있습니다.
   - 각 재귀 호출마다 함수 호출에 따른 오버헤드가 있으므로, 반복문을 사용하는 것에 비해 성능이 떨어질 수 있습니다. 

 

- 꼬리 재귀 최적화(Tail Recursion Optimization) 주의
   - 스택오버플로우와 성능 문제를 줄이는 기법으로 재귀 코드를 내부적으로 루프 형태로 바꿔서 스택이 쌓이지 않도록 합니다.
  - 모든 프로그래밍 언어가 최적화를 자동으로 지원하지는 않으므로, 개발자가 직접 코드를 루프 형태로 재작성해서 사용해야 할 수도 있습니다.