เราต้องเขียนฟังก์ชันที่รับสองตัวเลขเป็นอาร์กิวเมนต์ m และ n และคืนค่าผลรวมของเลขคู่ทั้งหมดที่อยู่ระหว่าง m และ n (รวมทั้งสองข้าง)
ตัวอย่าง −
ถ้า m = 10 และ n = -4
ผลลัพธ์ควรเป็น 10+8+6+4+2+0+(-2)+(-4) = 24
วิธีการ
เราจะคำนวณผลรวมเลขคู่ทั้งหมดจนถึง n และผลรวมเลขคู่ทั้งหมดจนถึง m ก่อน
จากนั้นตรวจสอบว่าระหว่าง m และ n ตัวไหนใหญ่กว่า ลบผลรวมของตัวเล็กออกจากผลรวมของตัวใหญ่ ซึ่งจะให้ผลรวมระหว่าง m และ n ในที่สุด
สูตร
ผลรวมของเลขคู่ทั้งหมดจาก 0 ถึง N กำหนดโดย −
$$\frac{N\times(N+2)}{4}$$
ดังนั้น มาใส่ทั้งหมดนี้ในโค้ด −
ตัวอย่าง
const sumEven = n => (n*(n+2))/4; const evenSumBetween = (a, b) => { return a > b ? sumEven(a) - sumEven(b) + b : sumEven(b) - sumEven(a) + a; }; console.log(evenSumBetween(-4, 10)); console.log(evenSumBetween(4, 16)); console.log(evenSumBetween(0, 10)); console.log(evenSumBetween(8, 8)); console.log(evenSumBetween(-4, 4));ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้
24 70 30 8 0