이를 정리하면 다음과 같이 재귀를 정의할 수 있습니다.
▼ 표 5-6 모음 사전 문제의 재귀 정의
상태 |
(word) |
word로 시작하는 모든 단어 |
종료 조건 |
(길이가 5인 word) = word |
|
점화식 |
(word) = [word] + (word + ‘A’) + (word + ‘E’) + (word + ‘I’) + (word + ‘O’) + (word + ‘U’) |
코드 작성
앞서 정의한 재귀를 이용하여 코드를 작성해봅시다.
먼저 상태가 나타내는 부분 문제를 해결하는 generate() 메서드를 작성해봅시다. 이 부분 문제는 word로 시작하는 모든 단어를 구해야 하므로 List를 반환합니다.
private List<String> generate(String word) {
// 종료 조건, 점화식 구현
}
종료 조건은 word 길이가 5일 때 바로 word를 반환하는 것입니다. 이는 다음과 같이 구현할 수 있습니다.
private List<String> generate(String word) {
List<String> words = new ArrayList<>();
words.add(word);
if (word.length() == 5) return words;
// 점화식 구현
}