比较 JavaScript 中递归和循环阶乘函数的性能


我们将编写两个 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

此时间因机器而异,但比例或多或少保持不变。

更新于:2020-12-10

150 次浏览

启动你的职业

完成课程,获得认证

开始
广告
© . All rights reserved.