使用 .reduce() 对数字进行阶乘化
Factorializing a number with .reduce()
我正在尝试编写一个函数,该函数将产生提供的整数的阶乘,然后减少阶乘数组(通过乘以每个数组元素)。
例如:
因子(5)>>> [1, 2, 3, 4, 5]>>> 1 * 2 * 3 * 4 * 5>>> 120
var array = [ ];
function factor(num) {
for (i = 1; i <= num; i++) {
array.push(i);
}
array.reduce(function(a, b) {
return a * b;
})
};
factor(5);
但是,它一直返回未定义。
我认为这与函数的格式有关,但我不确定。
尝试通过 reduce 的initial value
,
array.reduce(function(a, b) {
return a * b;
},1);
还返回function
中array
的缩减值,
function factor(num) {
for (i = 1; i <= num; i++) {
array.push(i);
}
return array.reduce(function(a, b) {
return a * b;
},1)
};
console.log(factor(5));
您的问题,即您的函数实际上并没有返回任何值,并且此类函数的"返回"值undefined
。让我们看看为什么会发生这种情况:
function factor(num) {
for (i = 1; i <= num; i++) {
array.push(i);
}
array.reduce(function(a, b) {
return a * b; // <-- Here is probably your misunderstanding
});
};
我标记的返回返回来自您传递给 reduce() 的函数,但没有来自 factor() 的返回。
.reduce()
不需要返回预期的结果。尝试使用单for
循环
var array = [];
function factor(num) {
for (var i = 1, res = 1; i < num; array[i - 1] = i, res *= ++i);
return res
};
console.log(
factor(3)
, factor(4)
, factor(5)
, factor(6)
, array
)
使用数组索引,如果有人不想用有序数字填充他们的数组,则减少。
num = 10;
Array(num).fill(null).reduce((acc, val, i) => {
if (i == 0) {
return 1;
}
return acc * (i + 1);
}, 1)
function factor(num) {
return Array(num)
.fill(null)
.map((item, index) => index + 1)
.reduce((pv, cv) => pv * cv);
}
console.log(factor(3), factor(4), factor(5), factor(6));
相关文章:
- 你能解释一下这个阶乘函数是如何工作的吗?
- 计算阶乘超过了Javascript中的最大整数限制
- 使用 .reduce() 对数字进行阶乘化
- 使用 VBScript 函数的阶乘
- JavaScript 中的阶乘.不行
- 递归函数 - 计数如何存储在此阶乘解决方案中
- JavaScript 阶乘递归
- 阶乘的最小有效非零位
- 如何阶乘只有 5 个数字
- Javascript,阶乘,太难了
- 通过用户提示查找数字的阶乘
- 如何在JavaScript中获取数字的阶乘
- Javascript函数计算整数的阶乘
- JavaScript的阶乘函数每次都返回0
- 阶乘函数运行错误:超过了最大调用堆栈大小
- 如何创建计算6阶乘的for循环
- 如何解释这个阶乘程序中的递归
- 如何在javascript中找到25的阶乘
- 阶乘. .我不知道为什么这个代码可以工作
- 为什么这不是阶乘呢?