예를 들어, Numbers 배열의 모든 요소를 합산하는 재귀 함수를 작성해야 하지만 뒤틀린 부분은 우리가 작성한 재귀 함수가 추가 변수(메모리)를 초기화할 수 없다는 것입니다.
합계를 저장하거나 배열의 인덱스 개수를 유지하기 위해 변수를 사용할 수 없는 것처럼, 모두 우리가 이미 가지고 있는 것을 사용해야 합니다.
여기 해결책이 있습니다 -
우리는 이미 배열을 가지고 있으며 첫 번째 요소를 사용할 수 있습니다(즉, 재귀 합계를 유지하기 위해 0번째 인덱스에 있는 요소).
접근 방식은 배열에서 하나의 요소를 반복적으로 꺼내고 하나의 요소만 남을 때까지 배열의 첫 번째 요소에 추가하는 것입니다.
하나의 요소만 남으면 배열의 누적 합계가 되어 반환합니다. 이 접근 방식의 코드는 -
예시
const recursiveSum = arr => { if(arr.length > 1){ arr[0] += arr.pop(); return recursiveSum(arr); }; return arr[0]; }; console.log(recursiveSum([1,2,3,4])); console.log(recursiveSum([1,2,3,4,3,6,3,32,7,9,5])); console.log(recursiveSum([]));
출력
콘솔의 출력은 -
10 75 undefined