이번 글에서는 숫자 n을 인자로 받아, n 이하의 모든 짝수의 합을 반환하는 재귀 함수를 자바스크립트로 작성하는 방법을 알아보겠습니다.
접근 방식
재귀 함수를 활용하면 반복문 없이도 문제를 해결할 수 있습니다. 핵심 로직은 다음과 같습니다.
- 입력값이 홀수라면 가장 가까운 짝수로 조정합니다.
- 현재 짝수를 누적합에 더한 뒤, 2를 뺀 값으로 함수를 다시 호출합니다.
- num이 0이 되면 재귀를 종료하고 지금까지 누적된 합을 반환합니다.
코드 예제
const recursiveEvenSum = (num, sum = 0) => {
num = num % 2 === 0 ? num : num - 1;
if(num){
return recursiveEvenSum(num - 2, sum + num);
}
return sum;
};
console.log(recursiveEvenSum(12));
console.log(recursiveEvenSum(122));
console.log(recursiveEvenSum(23));
console.log(recursiveEvenSum(10));
console.log(recursiveEvenSum(19));동작 원리
예를 들어 recursiveEvenSum(12)를 호출하면 12 → 10 → 8 → ... → 2 순서로 재귀가 진행되며, 각 단계에서 해당 짝수가 sum에 더해집니다. 최종적으로 12 + 10 + 8 + 6 + 4 + 2 = 42가 반환됩니다.
또한 입력값이 홀수인 경우(예: 23)에도 먼저 22로 조정되기 때문에 정상적으로 동작합니다.
실행 결과
콘솔 출력 결과는 다음과 같습니다.
42 3782 132 30 90
마무리
이처럼 재귀 함수와 기본 매개변수(default parameter)를 활용하면 반복문 없이 간결하게 n까지의 짝수 합을 구할 수 있습니다. 다만 큰 수를 다룰 때는 콜 스택 깊이 제한에 유의해야 하며, 실무에서는 성능이 중요한 경우 반복문 방식을 고려하는 것이 좋습니다.