재귀란?
- 문제를 쪼개어서 생각하는 것.
- base case : 탈출(가장 작은 문제의 답), 가장 작은 문제를 해결하는 경우
- recursive case : 지금 문제를 쪼갤 수 있을까, 문제를 쪼개는 경우
재귀를 언제 사용하면 좋을까?
- 주어진 문제를 비슷한 구조로 더 작은 문제로 나눌 수 있을 때
- 중첩된 반복문이 많거나 중첩된 반복문의 횟수를 예측하기 힘들 때
배열에서의 재귀
- head와 tail로 나눠서 생각할 수 있다.
let arr = [1, 2, 3 ,4]
// spread syntax를 사용해도 된다.
const [head, ...tail] = arr;
// 아니면 그냥 0번째 인덱스를 head에 할당하고 나머지를 tail에 할당해도 된다.
const head = arr[0];
const tail = arr.slice(1);