เราต้องเขียนฟังก์ชันแฟกทอเรียล (factorial) ที่ใช้ฟังก์ชันช่วย range() เพื่อสร้างอาร์เรย์ตัวเลข 1 ถึง n แล้วใช้ Array.prototype.reduce() คำนวณผลคูณ
ตัวอย่างโค้ด
const range = (start, end) => {
const acc = [];
for (var i = start; i < end; i++) {
acc.push(i);
}
return acc;
};
const factorial = n => {
let factors = range(1, Math.abs(n) + 1);
let res = factors.reduce((acc, val) => acc * val, 1);
if (n < 0) {
res *= -1;
}
return res;
};
console.log(factorial(5));
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
120