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

เวอร์ชันที่แก้ไขของการสรุปอาร์เรย์ที่มีการเรียกซ้ำใน JavaScript


สมมติว่า เราต้องเขียนฟังก์ชันแบบเรียกซ้ำที่รวมองค์ประกอบทั้งหมดของอาร์เรย์ของตัวเลข แต่ด้วยการบิดและการบิดคือฟังก์ชันแบบเรียกซ้ำที่เราเขียนไม่สามารถเริ่มต้นตัวแปรพิเศษใดๆ (หน่วยความจำ) ได้

เช่นเดียวกับที่เราไม่สามารถใช้ตัวแปรเพื่อเก็บผลรวมหรือนับจำนวนดัชนีของอาร์เรย์ได้ ทั้งหมดนี้จะต้องใช้สิ่งที่เรามีอยู่แล้ว

นี่คือวิธีแก้ปัญหา -

เรามีอาร์เรย์อยู่แล้วและสามารถใช้องค์ประกอบแรกได้ (เช่น องค์ประกอบที่ดัชนีที่ศูนย์เพื่อเก็บผลรวมแบบเรียกซ้ำ)

วิธีการคือเราเปิดองค์ประกอบหนึ่งซ้ำจากอาร์เรย์และเพิ่มไปยังองค์ประกอบแรกของอาร์เรย์จนกว่าเราจะเหลือเพียงองค์ประกอบเดียว

เมื่อเราเหลือเพียงองค์ประกอบเดียว มันจะเป็นผลรวมสะสมของอาร์เรย์และเราส่งคืนสิ่งนั้น รหัสสำหรับวิธีนี้จะเป็น -

ตัวอย่าง

const recursiveSum = arr => {
   if(arr.length > 1){
      arr[0] += arr.pop();
      return recursiveSum(arr);
   };
   return arr[0];
};
console.log(recursiveSum([1,2,3,4]));
console.log(recursiveSum([1,2,3,4,3,6,3,32,7,9,5]));
console.log(recursiveSum([]));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

10
75
undefined