如何在JavaScript中编写带有reduce和range的阶乘函数?

我们需要编写一个JavaScript阶乘函数,该函数需要另一个辅助函数range()

范围功能应准备一个从1到输入数字的数字范围。然后,主函数应在范围数组上运行Array.prototype.reduce()函数以计算阶乘

示例

为此的代码将是-

const range = (start, end) => {
   const acc = [];
   for (var i = start; i < end; i++) {
      acc.push(i);
   };
   return acc;
}
const factorial = n => {
   let factors = range(1, Math.abs(n)+1);
   let res = factors.reduce((acc,val) => {
      return acc * val;
   }, 1);
   if(n < 0){
      res *= -1;
   };
   return res;
};
console.log(factorial(5));

输出结果

控制台中的输出将是-

120