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

JavaScript로 숫자의 모든 자릿수 재귀 곱 구현하기

이번 글에서는 JavaScript를 사용하여 주어진 숫자의 모든 자릿수를 재귀적으로 곱하는 함수를 작성해 보겠습니다. 단, 숫자에 0이 포함되어 있다면 해당 자릿수는 곱셈 결과에 영향을 주지 않도록 1로 취급해야 합니다.

문제 이해하기

예를 들어, 입력값이 5720이라고 가정해 봅시다. 각 자릿수는 5, 7, 2, 0이며, 여기서 0은 1로 대체되어 계산됩니다.

따라서 결과는 다음과 같습니다.

5 × 7 × 2 × 1 = 70

재귀 접근 방식

재귀 함수를 활용하면 다음과 같은 흐름으로 문제를 해결할 수 있습니다.

  • 현재 숫자의 마지막 자릿수를 num % 10으로 추출합니다. 이때 자릿수가 0이면 1을 대신 사용합니다 (num % 10 || 1).
  • 추출한 자릿수를 누적 곱셈 값(res)에 곱합니다.
  • Math.floor(num / 10)을 통해 마지막 자릿수를 제거한 나머지 숫자로 재귀 호출을 반복합니다.
  • 숫자가 0이 되면(모든 자릿수 처리 완료), 지금까지 누적된 곱셈 값을 반환합니다.

코드 예제

아래는 위 로직을 구현한 JavaScript 코드입니다.

const num = 5720;

const recursiveProduct = (num, res = 1) => {
    if (num) {
        return recursiveProduct(Math.floor(num / 10), res * (num % 10 || 1));
    }
    return res;
};

console.log(recursiveProduct(num));

실행 결과

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

70

마무리

이처럼 재귀 함수와 논리 연산자(||)를 활용하면 코드를 간결하게 유지하면서도 0인 자릿수를 자연스럽게 1로 처리할 수 있습니다. 반복문 대신 재귀를 사용하면 코드의 의도가 명확해지고, 자릿수 처리와 같은 문제에서 우아한 해결책이 됩니다.