Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ผลิตภัณฑ์แบบเรียกซ้ำของตัวเลขรวม JavaScript


เราต้องสร้างฟังก์ชันที่รับอาร์กิวเมนต์จำนวนเท่าใดก็ได้ (Number literals) รวมเข้าด้วยกันแล้วส่งคืนผลคูณของตัวเลขเมื่อคำตอบมีความยาวเพียง 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