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

JavaScript로 팩토리얼(계승) 자릿수의 합 계산하기

문제 이해하기

숫자 하나를 인자로 받는 JavaScript 함수를 작성해 보겠습니다. 이 함수는 먼저 해당 숫자의 팩토리얼(계승)을 계산한 뒤, 계산된 팩토리얼 값의 각 자릿수를 모두 더한 합을 반환해야 합니다.

예를 들어 숫자 6이 주어지면, 팩토리얼은 720이며, 따라서 기대되는 출력값은 7 + 2 + 0 = 9입니다.

예제 코드

const factorial = (num) => {
  if (num == 1) return 1;
  return num * factorial(num - 1);
};

const sumOfDigits = (num = 1) => {
  const str = num.toString();
  let sum = 0;
  for (var x = -1; ++x < str.length;) {
    sum += +str[x];
  }
  return sum;
};

const sumFactorialDigits = num => sumOfDigits(factorial(num));

console.log(sumFactorialDigits(6));

코드 설명

factorial 함수: 재귀 호출을 사용해 전달받은 숫자의 팩토리얼을 계산합니다. num이 1이면 1을 반환하고, 그렇지 않으면 num에 (num - 1)의 팩토리얼 값을 곱합니다.

sumOfDigits 함수: 숫자를 문자열로 변환한 뒤 반복문으로 각 문자를 숫자로 바꾸어 더합니다. 단항 연산자 '+'를 사용해 문자를 숫자로 형변환하는 점이 특징입니다.

sumFactorialDigits 함수: 위의 두 함수를 조합하여, 팩토리얼 계산 결과의 자릿수 합을 한 번에 구합니다.

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

9