재귀를 사용한 코드는 대부분 간결해지고, 이해하기 쉽습니다.
재귀의 핵심은 문제를 해결하기 위해 다양한 방식으로 생각하는 능력을 기르는 것입니다.
모든 재귀 함수는 반복문 while, for문을 사용해 표현할 수 있습니다. 재귀를 적용할 수 있는 경우에는 재귀를 사용하는 것이 코드가 더욱 간결해지고 이해하기 쉽습니다.
계속 시도하고 연습하는 수 밖에 없습니다.
재귀 함수의 입력값과 출력값 정의하기
재귀 함수를 통해 풀고자 하는 문제, 도달하고자 하는 목표를 정의하는 데 도움이 됩니다.
문제를 쪼개고 경우의 수를 나누기
주어진 문제를 어떻게 쪼갤 것인지 고민합니다. 문제를 쪼갤 기준을 정하고, 정한 기준에 따라 문제를 더 큰 경우와 작은 경우로 구분할 수 있는지 확인합니다. 중요한 관점은 입력값이나 문제의 순서와 크기입니다. 주어진 입력값 또는 문제 상황을 크기로 구분할 수 있거나, 순서를 명확하게 정할 수 있다면 문제를 구분하는 데 도움이 됩니다.
단순한 문제 해결하기
가장 해결하기 쉬운 문제부터 해결합니다. 이를 재귀의 기초라고 부릅니다. 재귀의 기초는 나중에 재귀 함수를 구현할 때, 재귀의 탈출 조건을 구성합니다.
복잡한 문제 해결하기
어떤 함수가 스스로 호출하는 것
ex)
function fac(n) {
if(n === 1) {
return 1;
}
return n * fac(n-1);
// fac(n-1)이 계속해서 스스로를 호출합니다.
// 예를들어 n=4일 때
// 4 * fac(3)
// 4 * 3 * fac(2) 이런식으로 진행된다.
}