算法:分解数字 douts



我正在 FCC 上进行阶乘化算法挑战,如果有人比我更了解我,我将不胜感激

我按照以下步骤对数字进行分解:

  1. 使用参数 (num) 创建函数。

  2. 我创建了一个 if 语句来完成下一个任务:因子化(0) 应该返回 1。如果 (num === 0) {return 1;}

  3. 在函数内创建一个数组。

  4. 创建一个循环来遍历 num-1 数字并将它们推送到数组中。因此,我们将当前数字 + 所有以前的值添加到数组中。示例:如果我们的数字是 5,我们加上 5、4、3、2、1。

  5. 在数组中使用 reduce 方法将数组中每个数字的值相乘(阶乘化)。

  6. 返回给定的值。

我的代码:

function factorialize(num) {
if (num === 0) { return 1; }
else {var array = [];
for(i = num; i >= 1; i--){
var newArray = array.push[i];
newArray.reduce(function(previousVal, currentVal){
return previousVal * currentVal;
});
}
}
}
factorialize(5);

我现在主要得到 2 次。这种解决算法的方法可能不是最有效的方法,但是:

  1. 这是解决它的可行方法吗?

  2. 为什么我得到"无法读取未定义的属性'减少'"。

挑战链接:https://www.freecodecamp.org/challenges/factorialize-a-number

你可以简单地试试这个:

function factorialize(num) {
if (num === 0) { return 1; }
else {
for (var i = num - 1; i >= 1; i--) {
num *= i;
}
return num;
}
}
factorialize(5);

最新更新