สมมติว่า เราต้องเขียนฟังก์ชันแบบเรียกซ้ำที่รวมองค์ประกอบทั้งหมดของอาร์เรย์ของตัวเลข แต่ด้วยการบิดและการบิดคือฟังก์ชันแบบเรียกซ้ำที่เราเขียนไม่สามารถเริ่มต้นตัวแปรพิเศษใดๆ (หน่วยความจำ) ได้
เช่นเดียวกับที่เราไม่สามารถใช้ตัวแปรเพื่อเก็บผลรวมหรือนับจำนวนดัชนีของอาร์เรย์ได้ ทั้งหมดนี้จะต้องใช้สิ่งที่เรามีอยู่แล้ว
นี่คือวิธีแก้ปัญหา -
เรามีอาร์เรย์อยู่แล้วและสามารถใช้องค์ประกอบแรกได้ (เช่น องค์ประกอบที่ดัชนีที่ศูนย์เพื่อเก็บผลรวมแบบเรียกซ้ำ)
วิธีการคือเราเปิดองค์ประกอบหนึ่งซ้ำจากอาร์เรย์และเพิ่มไปยังองค์ประกอบแรกของอาร์เรย์จนกว่าเราจะเหลือเพียงองค์ประกอบเดียว
เมื่อเราเหลือเพียงองค์ประกอบเดียว มันจะเป็นผลรวมสะสมของอาร์เรย์และเราส่งคืนสิ่งนั้น รหัสสำหรับวิธีนี้จะเป็น -
ตัวอย่าง
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