재귀는 자전거를 타는 것과 비슷하다. 자전거를 처음 배울 떄, 다른 사람이 타는 것을 보면 쉬워 보이지만 막상 내가 타려고 하면 잘 안되는 것을 경혐해 본적이 있다. 그래서 자전거를 잘 타려면 계속 자전거를 타는 연습을 시도하는 수 밖에 없다. 재귀도 마찬가지이다. 재귀적 사고를 더욱 쉽게 할 수 있게 연습을 계속 해야만 하는 것이다.
function arrSum(arr) {
//Base Case : 문제를 더 이상 쪼갤 수 없는 경우 (재귀의 기초)
if (arr.length === 0) {
return 0;
}
// Recursive Case : 그렇지 않은 경우
// 문제를 더 이상 쪼갤 수 없는 경우
const head = arr[0] // head: 배열의 첫 요소
const tail = arr.slice(1)// tail: 배열의 첫 요소만 제거된 배열
return head + arrSum(tail);
}
재귀적 사고의 대표적인 예제인 Factoial 예제
예제
수를 입력받아 n-factorial(n!; 엔-팩토리얼) 값을 리턴해야 합니다.
n! 은 1부터 n까지 1씩 증가한 모든 값의 곱입니다.
function factorial(num) {
// 팩토리얼 0은 1
if (num === 0) { // base case
return 1;
}
return num * factorial(num - 1); // recursive case
}