-
재귀 : 원래의 자리로 되돌아가거나 되돌아옴
문제 해결
➡️ 1. 문제를 작게 쪼갠다
2. 문제가 더 작아지지 않을 때까지, 가장 작은 단위로 문제를 쪼갠다.
3. 가장 작은 단위의 문제를 풂으로써 전체 문제를 해결한다.
1. 문제를 작게 쪼개기
arrSum([1, 2, 3, 4, 5]) === 1 + arrSum([2, 3, 4, 5]) arrSum([2, 3, 4, 5]) === 2 + arrSum([3, 4, 5]) ...
2. 가장 작은 단위로 쪼개기
arrSum([3, 4, 5]) === 3 + arrSum([4, 5]) arrSum([4, 5]) === 4 + arrSum([5]) arrSum([5]) === 5 + arrSum([])
3. 문제 해결
arrSum([]) === 0; // <-- 문제가 더는 작아지지 않는 순간 // 가장 작은 경우의 해결책을 적용합니다. arrSum([5]) === 5 + arrSum([]) === 5 + 0 === 5; arrSum([4, 5]) === 4 + arrSum([5]) === 4 + 5 === 9; arrSum([3, 4, 5]) === 3 + arrSum([4, 5]) === 3 + 9 === 12; arrSum([2, 3, 4, 5]) === 2 + arrSum([3, 4, 5]) === 2 + 12 === 14; arrSum([1, 2, 3, 4, 5]) === 1 + arrSum([2, 3, 4, 5]) === 1 + 14 === 15;
function arrSum (arr) { // 빈 배열을 받았을 때 0을 리턴하는 조건문 // --> 가장 작은 문제를 해결하는 코드 & 재귀를 멈추는 코드 if (arr.length === 0) { return 0 } // 배열의 첫 요소 + 나머지 요소가 담긴 배열을 받는 arrSum 함수 // --> 재귀(자기 자신을 호출)를 통해 문제를 작게 쪼개나가는 코드 return arr.shift() + arrSum(arr) }
재귀는 언제 사용해야 하는지?
➡️ 1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
2. 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우
(모든 재귀 함수는 반복문으로 표현할 수 있지만 대부분 재귀를 적용한 코드가 간결하다)
'FE' 카테고리의 다른 글
UI / UX (0) 2023.06.13 JSON.stringify (0) 2023.06.12 Section2 회고 (1) 2023.06.08 기술면접 (0) 2023.06.08 my-agora-states-server (0) 2023.06.07