재귀함수의 특징
재귀함수의 장점
- 코드 간결, 수정 용이
- 변수를 여러개 사용할 필요가없음
재귀함수의 단점
- 코드의 흐름을 직관적으로 파악하기 어려움
-
반복하여 매서드를 호출하며 지역변수, 매개변수, 반환값을 모두 process stack에 저장 → 반복문에 비해서 메모리를 더 많이 사용하게 되어 많은 메모리를 사용
- 메서드를 호출하고 매서드가 종료된 이후에 복귀를 위한 컨텍스트 스위칭 비용이 발생
재귀함수의 템플릿
public type recursive(input1, input2, ...) {
// Base Case : 문제를 더 이상 쪼갤 수 없는 경우
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// recursive Case
// 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
// 예1. someValue + recursive(input1Changed, input2Changed, ...)
// 예2. someValue * recursive(input1Changed, input2Changed, ...)
}