Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트로 숫자의 자릿수를 재귀적으로 더해 한 자리 수 만들기

이번 글에서는 숫자를 입력받아 각 자릿수를 계속 더한 뒤, 결과가 한 자리 숫자가 될 때까지 이 과정을 재귀적으로 반복하는 자바스크립트 함수를 작성하는 방법을 알아보겠습니다.

예를 들어, 입력된 숫자가 다음과 같다면:

54563

최종 출력값은 5가 되어야 합니다. 그 이유는 다음과 같습니다:

= 5 + 4 + 5 + 6 + 3
= 23
= 2 + 3
= 5

이처럼 자릿수의 합이 두 자리 이상일 경우, 다시 그 숫자들의 합을 구하는 과정을 반복하여 최종적으로 한 자리 숫자(디지털 루트, Digital Root)를 얻는 것이 목표입니다.

구현 방법

함수는 크게 두 부분으로 나눌 수 있습니다. 먼저 입력값이 이미 한 자리 숫자라면 그대로 반환하고, 그렇지 않다면 각 자릿수의 합을 구한 후 그 결과를 인자로 하여 자기 자신을 다시 호출합니다.

코드 예시

const num = 54563;
const addRecursively = num => {
    // 한 자리 숫자면 그대로 반환
    if(num < 10){
        return num;
    };
    let sum = 0;
    // 각 자릿수의 합 계산
    while(num !== 0) {
        sum += (num % 10);
        num = parseInt(num / 10);
    };
    // 합이 여전히 두 자리 이상이면 재귀 호출
    return addRecursively(sum);
};
console.log(addRecursively(num));

동작 원리 설명

  • 기저 조건(Base Case): num < 10일 때, 즉 숫자가 이미 한 자리라면 해당 값을 그대로 반환하여 재귀를 종료합니다.
  • 자릿수 분리: num % 10으로 마지막 자릿수를 추출하고, parseInt(num / 10)으로 마지막 자릿수를 제거한 나머지를 얻습니다.
  • 재귀 호출: 구해진 자릿수의 합을 새로운 인자로 전달하며 함수를 다시 호출합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다:

5

입력값 54563의 자릿수를 모두 더하면 23이 되고, 다시 2 + 3을 계산하면 최종적으로 5라는 한 자리 숫자를 얻게 됩니다.