원하는 수의 인수(숫자 리터럴)를 가져와서 더한 다음 답이 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