如何使函数返回数组中每个整数的阶乘

时间:2018-12-22 20:09:28

标签: javascript arrays function loops if-statement

此问题已删除

4 个答案:

答案 0 :(得分:5)

首先,创建一个递归函数来计算单个数字的阶乘:

function factorial(num) {
    if (num == 0 || num == 1) {
        return 1;
    }
    return num * factorial(num - 1);
}

然后对数组进行处理,只需像这样使用Array.prototype.map()

function getFactorials(arr) {
    var result = arr.map(x => factorial(x));
    return result;
}

这是一个示范:

 

function factorial(num) {
    if (num == 0 || num == 1) {
        return 1;
    }
    return num * factorial(num - 1);
}

function getFactorials(arr) {
    var result = arr.map(x => factorial(x));
    return result;
}

console.log(getFactorials([4, 8, 10])); 
console.log(getFactorials([]));
console.log(getFactorials([1, 2, 3, 4, 5]));
 

希望这会有所帮助!

答案 1 :(得分:4)

您需要将函数分为两个函数,一个用于迭代数组并收集所计算的值,另一个用于获取数字的外观。

function getFactorials(nums) {
    var result = [],
        i;
        
    for (i = 0; i < nums.length; i++) {
        result.push(getFactorial(nums[i]));
    }
    return result;
} 

function getFactorial(n) {
   if (n === 0 || n === 1) return 1;
   return n * getFactorial(n - 1);
}

console.log(getFactorials([]));
console.log(getFactorials([3]));
console.log(getFactorials([3, 4, 5]));
console.log(getFactorials([3, 8, 9, 10]));

答案 2 :(得分:1)

此方法将采用数字数组并返回其中的阶乘数字数组,

function getFactorials(array) {
        var facArray = [];
        for (var j = 0; j < array.length; j++) {
            num = array[j];
            if (num === 0 || num === 1)
                return 1;
            for (var i = num - 1; i >= 1; i--) {
                num *= i;
            }
            facArray.push(num);
        }
        return facArray;

    }

console.log(getFactorials([4, 3, 2]));

答案 3 :(得分:1)

function getFactorials(nums) {
  return numbers = Array.from(nums).map(function factorializeSingleNumber(num) {
    if (num == 0 || num == 1) return 1
    else return num * factorializeSingleNumber(num - 1)
  })
}

我发现解决这些问题的最好方法是解决问题。因此,在这种情况下,请设计一个分解单个数字的解决方案。在工作时,您可以将此“工作代码”添加到映射或循环中,以遍历数组。

我上面的解决方案使用递归,但也可能是简单的“ for循环”