Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

합산 자릿수 JavaScript의 재귀 곱

<시간/>

원하는 수의 인수(숫자 리터럴)를 가져와서 더한 다음 답이 1자리일 때 숫자의 곱을 반환하는 함수를 만들어야 합니다.

예를 들어 -

인수가 -

인 경우
16, 34, 42

먼저 함께 추가해야 합니다 -

16+34+42 = 92

그런 다음 다음과 같은 1자리 숫자를 얻을 때까지 계속해서 숫자를 곱합니다. -

9*2 = 18
1*8 = 8

한 자리 숫자를 얻으면 함수에서 반환해야 합니다.

우리는 이것을 두 가지 기능으로 나눌 것입니다 -

  • 한 함수는 숫자를 받아들이고 숫자의 곱을 반환합니다. 이를 위해 재귀를 사용할 것입니다. 이 첫 번째 함수를 product()라고 부르겠습니다.

  • 두 번째 함수는 이 product() 함수를 재귀적으로 호출하여 제품이 1자리인지 확인하고, 그렇지 않으면 제품을 반환하고, 그렇지 않으면 계속 반복합니다.

이 전체 기능에 대한 코드는 -

예시

const recursiveMuliSum = (...numbers) => {
   const add = (a) => a.length === 1 ? a[0] : a.reduce((acc, val) => acc+val);
   const produce = (n, p = 1) => {
      if(n){
         return produce(Math.floor(n/10), p*(n%10));
      };
      return p;
   };
   const res = produce(add(numbers));
   if(res > 9){
      return recursiveMuliSum(res);
   }
   return res;
};
console.log(recursiveMuliSum(16, 28));
console.log(recursiveMuliSum(16, 28, 44, 76, 11));
console.log(recursiveMuliSum(1, 2, 4, 6, 8));

출력

콘솔의 출력은 다음과 같습니다. -

6
5
2