숫자를 입력받아 각 자릿수의 합을 재귀적으로 계산하고, 그 결과가 한 자리 숫자가 될 때까지 반복하는 함수를 만들어야 한다고 가정해 보겠습니다.
문제 이해하기
예를 들어 다음과 같습니다.
findSum(12345) = 1+2+3+4+5 = 15 = 1+5 = 6
따라서 최종 출력값은 6이 되어야 합니다.
이제 findSum() 함수의 코드를 직접 작성해 보겠습니다.
예제 코드
// 재귀를 사용한 구현
const findSum = (num) => {
if(num < 10){
return num;
}
const lastDigit = num % 10;
const remainingNum = Math.floor(num / 10);
return findSum(lastDigit + findSum(remainingNum));
}
console.log(findSum(2568));코드 동작 원리
이 코드는 먼저 입력된 숫자가 10보다 작은지 확인합니다. 10보다 작다면 이미 한 자리 숫자이므로 그대로 반환하면 됩니다. 그렇지 않은 경우에는 나머지 연산자(%)를 사용해 마지막 자릿수를 추출하고, Math.floor()를 이용해 나머지 부분의 숫자를 구한 뒤, 재귀적으로 함수를 호출하여 합이 10보다 작아질 때까지 이 과정을 반복합니다.
출력 결과
위 코드의 실행 결과는 다음과 같습니다.
3
2568의 각 자릿수를 더하면 2+5+6+8 = 21이 되고, 다시 2+1 = 3이므로 최종 결과는 3입니다.