我将如何编写一个函数,该函数接受一个正整数数组并返回数字上的阶乘数组?

时间:2019-05-08 22:24:58

标签: javascript arrays refactoring

我想要一个接受正整数数组并返回这些整数的阶乘的函数-也许使用.map.reduce方法?

例如

[2, 4, 6]返回[2, 24, 720]

下面的代码是单个整数时可以正常工作,但是在传递数组时不返回任何内容。

function factorial(n) {
  if (n === 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}

factorial(5); // 120

2 个答案:

答案 0 :(得分:2)

只需使用您当前的函数调用.map

const factorial = (n) => {
  if (n === 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}
const factorials = arr => arr.map(factorial);
console.log(factorials([2, 4, 6]));

答案 1 :(得分:0)

reduce()方法在数组的每个元素上执行reducer函数(由您提供),从而产生单个输出值。 See more

使用.map(),您可以这样做-

function factorialize(num) {
 if (num < 0) 
   return -1;
 else if (num == 0) 
   return 1;
 else {
   return (num * factorialize(num - 1));
 }
}
const numbers = [2,4,6];
const factorial = numbers.map(n => factorialize(n))
console.log(factorial)