Tạo hàm nhận bất kỳ số lượng tham số số, cộng chúng lại, trả về tích các chữ số khi kết quả chỉ còn 1 chữ số.
Ví dụ: 16, 34, 42 => tổng = 92 => 9*2=18 => 1*8=8 => trả về 8.
Chia thành 2 hàm: product() đệ quy tính tích chữ số; hàm chính gọi đệ quy product() cho đến khi kết quả 1 chữ số.
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));Kết quả
Đầu ra trong console sẽ là:
6 5 2