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

JavaScript에서 숫자의 모든 자릿수를 반복해 더해 한 자릿수로 만드는 방법

문제 소개

숫자 하나를 유일한 인수로 받아 처리하는 JavaScript 함수를 작성해야 합니다. 이 함수는 숫자의 모든 자릿수를 더한 뒤, 그 합이 한 자릿수가 될 때까지 같은 연산을 계속 반복해야 합니다.

예를 들어 다음과 같은 숫자가 주어졌다고 가정해 보겠습니다.

const num = 54564567;

함수는 아래와 같은 방식으로 자릿수를 반복해서 더합니다.

5+4+5+6+4+5+6+7 = 42
4+2 = 6

따라서 최종 출력값은 6입니다.

구현 방법

먼저 각 자릿수의 합을 구하는 재귀 함수 sumDigits를 정의합니다. 이 함수는 num % 10으로 마지막 자릿수를 추출해 누적합에 더하고, Math.floor(num / 10)으로 마지막 자릿수를 제거한 값으로 재귀 호출을 이어갑니다.

그다음 sumDestructively 함수에서는 합계가 두 자릿수 이상인 동안, 즉 9보다 큰 동안 sumDigits를 반복 호출하여 한 자릿수만 남을 때까지 과정을 되풀이합니다.

예제 코드

const num = 54564567;
const sumDigits = (num, sum = 0) => {
    if(num){
        return sumDigits(Math.floor(num / 10), sum + (num % 10));
    };
    return sum;
}
const sumDestructively = (num) => {
    let sum = num; while(sum > 9){
        sum = sumDigits(sum);
    };
    return sum;
}
console.log(sumDestructively(num));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

6