เราจำเป็นต้องเขียนฟังก์ชันที่ใช้ตัวเลขสองตัวเป็นอาร์กิวเมนต์ m และ n และจะส่งกลับผลรวมของจำนวนคู่ทั้งหมดที่อยู่ระหว่าง m และ n (รวมทั้งสอง)
ตัวอย่างเช่น −
If m = 10 and 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