สามเหลี่ยมเพิ่มขึ้น (Increasing Triangle)
สำหรับปัญหานี้ สมมติว่าสามเหลี่ยมเพิ่มขึ้นมีรูปแบบดังนี้:
1 2 3 4 5 6 7 8 9 10
ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับตัวเลข n เข้ามา และคืนค่าผลรวมของตัวเลขในแถวที่ n ของสามเหลี่ยมเพิ่มขึ้น
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const num = 15;
const rowSum = (num = 1) => {
const arr = [];
const fillarray = () => {
let num = 0;
for (let i = 1; i <= 10000; i++) {
const tempArr = [];
for (let j = 0; j < i; j++) {
num++;
tempArr.push(num);
}
arr.push(tempArr);
}
};
fillarray();
return arr[num - 1].reduce((a, b) => a + b, 0);
};
console.log(rowSum(num));
ผลลัพธ์
1695
คำอธิบายเพิ่มเติม
สามารถคำนวณได้โดยตรงด้วยสูตรคณิตศาสตร์: ตัวเลขแรกของแถวที่ n คือ n(n-1)/2 + 1 และตัวเลขสุดท้ายคือ n(n+1)/2 ผลรวมของแถวที่ n = n × (first + last) / 2 = n × (n² + 1) / 2 ซึ่งรวดเร็วกว่าการสร้างอาร์เรย์มาก