Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เวอร์ชันปรับแต่งของการหาผลรวมอาร์เรย์ด้วย Recursion ใน JavaScript

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

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

นี่คือโซลูชัน:

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

แนวทางคือ เรา pop องค์ประกอบทีละตัวจากอาร์เรย์และบวกเข้ากับองค์ประกอบแรกของอาร์เรย์ จนเหลือแค่องค์ประกอบเดียว

เมื่อเหลือแค่ตัวเดียว มันจะเป็นผลรวมสะสมของอาร์เรย์ และเราคืนค่านั้น โค้ดสำหรับแนวทางนี้:

ตัวอย่างโค้ด

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