比较 JavaScript 中递归和循环阶乘函数的性能
javascriptweb developmentfront end technologyobject oriented programming
我们将编写两个 JavaScript 函数,这两个函数的任务都是接收一个数字并返回其阶乘。
第一个函数应该使用 for 循环或 while 循环来计算阶乘。而第二个函数应该使用递归方法计算阶乘。
最后,我们应该比较这些函数在大量迭代中所花费的时间。
示例
以下是代码 −
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
所花费的时间会因机器而异,但比率必然保持大致相同。