สมมติว่าเราต้องเขียนฟังก์ชันเรียกซ้ำที่หาผลรวมของทุกองค์ประกอบในอาร์เรย์ตัวเลข แต่มีข้อต่อข้าง คือ ฟังก์ชันเรียกซ้ำนี้ไม่สามารถสร้างตัวแปรเพิ่มเติม (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