เราจะเขียนฟังก์ชัน JavaScript สองฟังก์ชัน งานของทั้งสองฟังก์ชันคือการรับตัวเลขและคืนค่าแฟกทอเรียล
ฟังก์ชันแรกควรใช้ a for loop หรือ while loop เพื่อคำนวณแฟกทอเรียล ในขณะที่ฟังก์ชันที่สองควรคำนวณแฟกทอเรียลโดยใช้วิธีการแบบเรียกซ้ำ
สุดท้ายนี้ เราควรเปรียบเทียบเวลาที่ใช้โดยฟังก์ชันเหล่านี้กับการทำซ้ำหลายๆ ครั้ง
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const factorial = (num = 1) => {
let result = 1;
for (let i = 2; i <= num; i += 1) {
result *= i;
}
return result;
}
const factorialRecursive = (num = 1) => {
if(num > 1){
return num * factorialRecursive(num - 1);
}else{
return 1;
}
};
const ITERATIONS = 100000000;
const num = 12;
console.time('Looping Approach');
for(let i = 0; i < ITERATIONS; i++){
factorial(num);
};
console.timeEnd('Looping Approach');
console.time('Recursive Approach');
for(let j = 0; j < ITERATIONS; j++){
factorialRecursive(num);
};
console.timeEnd('Recursive Approach'); ผลลัพธ์
ต่อไปนี้เป็นผลลัพธ์บนคอนโซล -
Looping Approach: 886.720ms Recursive Approach: 6526.203ms
เวลาที่ใช้นี้จะแตกต่างกันไปในแต่ละเครื่อง โดยอัตราส่วนนี้จะยังคงเท่าเดิม