此问题已删除
答案 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循环”