Computer >> Máy Tính >  >> Lập trình >> Javascript

Sản phẩm đệ quy của các chữ số tổng hợp JavaScript

Chúng ta phải tạo một hàm nhận vào bất kỳ số lượng đối số nào (Chữ số), cộng chúng lại với nhau và trả về tích các chữ số khi câu trả lời chỉ có 1 chữ số.

Ví dụ -

Nếu các đối số là -

16, 34, 42

Đầu tiên chúng ta phải thêm chúng lại với nhau -

16+34+42 = 92

Và sau đó tiếp tục nhân các chữ số với nhau cho đến khi chúng ta nhận được số có 1 chữ số như thế này -

9*2 = 18
1*8 = 8

Khi chúng ta nhận được số có một chữ số, chúng ta phải trả lại nó từ hàm của mình.

Chúng tôi sẽ chia điều này thành hai chức năng -

  • Một hàm chấp nhận một số và trả về tích các chữ số của nó, chúng tôi sẽ sử dụng đệ quy để làm như vậy, hãy gọi hàm đầu tiên này là product ().

  • Hàm thứ hai gọi một cách đệ quy hàm product () này và kiểm tra nếu sản phẩm có 1 chữ số, nó sẽ trả về sản phẩm nếu không nó sẽ tiếp tục lặp lại.

Mã cho toàn bộ chức năng này sẽ là -

Ví dụ

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));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

6
5
2