Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเปรียบเทียบประสิทธิภาพของฟังก์ชันแฟกทอเรียลแบบเรียกซ้ำและแบบวนซ้ำใน JavaScript


เราจะเขียนฟังก์ชัน 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

เวลาที่ใช้นี้จะแตกต่างกันไปในแต่ละเครื่อง โดยอัตราส่วนนี้จะยังคงเท่าเดิม