ฟังก์ชัน midElement() หาสมาชิกกลางของอาร์เรย์โดยใช้ recursion แทนการเข้าถึง length และ loops
กฎ
- ความยาวคี่: คืนสมาชิกกลาง 1 ตัว
- ความยาวคู่: คืนสมาชิกกลาง 2 ตัว
ตัวอย่างโค้ด
const arr = [14, 32, 36, 42, 45, 66, 87];
const array = [13, 92, 83, 74, 55, 46, 74, 82];
const midElement = (arr, ind = 0) => {
if (arr[ind]) {
return midElement(arr, ++ind); // recursion นับความยาว
}
// ind = length
return ind % 2 !== 0
? [arr[(ind - 1) / 2]]
: [arr[(ind / 2) - 1], arr[ind / 2]];
};
console.log(midElement(arr)); // [42]
console.log(midElement(array)); // [74, 55]
การทำงาน
- Recursion เพิ่ม
indจนกว่าarr[ind]จะเป็น falsy (undefined) - ตอนนั้น
ind= ความยาวอาร์เรย์ - คำนวณตำแหน่งกลางจากความยาว
ผลลัพธ์
[ 42 ] [ 74, 55 ]
ข้อควรระวัง: Recursion depth จำกัด (~10,000-15,000) อาร์เร่ายาวกว่านี้จะ stack overflow