เราจะเขียนฟังก์ชัน 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
เวลาที่ใช้นี้จะแตกต่างกันไปในแต่ละเครื่อง โดยอัตราส่วนนี้จะยังคงเท่าเดิม