Javascript 通过创建数组并将其相乘来分解数字
我正在经历一个FreeCodeCamp挑战 “返回所提供整数的阶乘 如果整数用字母n表示,则阶乘是 所有小于或等于n的正整数的乘积 阶乘通常用简写符号n表示 例如:5!=1*2*3*4*5=120“ 我已经知道最简单的方法是使用递归,但是当我发现这个事实的时候,我已经在尝试通过创建一个数组来解决这个问题,在数组中输入数字并将它们相乘。但是我在这一步上被卡住了。我创建了一个数组,其位数取决于函数factorialize参数,但我无法得到这些数字的乘积。我做错了什么:Javascript 通过创建数组并将其相乘来分解数字,javascript,arrays,Javascript,Arrays,我正在经历一个FreeCodeCamp挑战 “返回所提供整数的阶乘 如果整数用字母n表示,则阶乘是 所有小于或等于n的正整数的乘积 阶乘通常用简写符号n表示 例如:5!=1*2*3*4*5=120“ 我已经知道最简单的方法是使用递归,但是当我发现这个事实的时候,我已经在尝试通过创建一个数组来解决这个问题,在数组中输入数字并将它们相乘。但是我在这一步上被卡住了。我创建了一个数组,其位数取决于函数factorialize参数,但我无法得到这些数字的乘积。我做错了什么: function factor
function factorialize(num) {
var array = [];
var product;
for(i = 0; i<=num;i++) {
array.push(i);
for (j=0; j < array.length; j++) {
product *= array[j];
}
return product;
}
}
factorialize(5);
函数因式分解(num){
var数组=[];
var乘积;
对于(i=0;i我认为最简单的方法是创建一个范围,并减少该范围:
var n=5;
函数分解(最大值){
返回[…数组(max).keys()].reduce((a,b)=>a*(b+1),1);
}
console.log(factorize(n));
我认为最简单的方法是创建一个范围并减少它:
var n=5;
函数分解(最大值){
返回[…数组(max).keys()].reduce((a,b)=>a*(b+1),1);
}
console.log(factorize(n));
看起来您错过了一个右括号
function factorialize(num) {
var array = [];
var product = 1;
for(i = 0; i<=num;i++) {
array.push(i);
} //right here!!! <----
for (j=0; j < array.length; j++) {
product *= array[j];
}
return product;
}
factorialize(5);
函数因式分解(num){
var数组=[];
var乘积=1;
对于(i=0;i而言,您似乎错过了一个右括号
function factorialize(num) {
var array = [];
var product = 1;
for(i = 0; i<=num;i++) {
array.push(i);
} //right here!!! <----
for (j=0; j < array.length; j++) {
product *= array[j];
}
return product;
}
factorialize(5);
函数因式分解(num){
var数组=[];
var乘积=1;
对于(i=0;i您只需要一个循环,
从1到最大值,然后将它们相乘,
只是稍微清理一下你的代码
事实变量将包含构成总和的各个数字的字符串版本
如果m是5,那么事实上将是1*2*3*4*5
function factorialize(num) {
var product = 1;
var fact = ""
for (i = 1; i <= num; i++) {
product *= i;
fact += i + "*"
}
fact = fact.substring(0, fact.length - 1)
console.log(fact)
return product;
}
console.log(factorialize(5));
函数因式分解(num){
var乘积=1;
var fact=“”
对于(i=1;i您只需要一个循环,
从1到最大值,然后将它们相乘,
只是稍微清理一下你的代码
事实变量将包含构成总和的各个数字的字符串版本
如果m是5,那么事实上将是1*2*3*4*5
function factorialize(num) {
var product = 1;
var fact = ""
for (i = 1; i <= num; i++) {
product *= i;
fact += i + "*"
}
fact = fact.substring(0, fact.length - 1)
console.log(fact)
return product;
}
console.log(factorialize(5));
函数因式分解(num){
var乘积=1;
var fact=“”
对于(i=1;i1),您需要初始值'product'变量
2) 你应该把i=0改为1。你在循环中乘以0
3) 您不需要嵌套循环
function factorialize(num) {
var array = [];
var product = 1;
for(var i = 1; i <= num; i++) {
array.push(i);
}
for (j=0; j < array.length; j++) {
product *= array[j];
}
return product;
}
函数因式分解(num){
var数组=[];
var乘积=1;
对于(var i=1;i1),您需要初始值“product”变量
2) 你应该把i=0改为1。你在循环中乘以0
3) 您不需要嵌套循环
function factorialize(num) {
var array = [];
var product = 1;
for(var i = 1; i <= num; i++) {
array.push(i);
}
for (j=0; j < array.length; j++) {
product *= array[j];
}
return product;
}
函数因式分解(num){
var数组=[];
var乘积=1;
对于(var i=1;i您正在将0
作为第一个元素。因此,产品自然也将是0
。您还应该将product
初始化为1
。关键是函数返回NaN,甚至不是0:)检查Adam的下面以获得一个简单的解决方案。您正在将0
作为第一个元素。因此,产品自然也将是0
。您还应该将产品
初始化为1
。重点是函数返回NaN,甚至不是0:)检查Adam的下面以获得一个简单的解决方案。很抱歉,但是在哪里?额外return product之后的右括号;
和product
应该用1
初始化。非常感谢。它现在起作用了。我有3个错误:1.第一个for循环的右括号在return product之后,而不是在数组之后。push(I).2.我将0作为第一个元素,因此产品始终为0。将I=0更改为I=1-修复了问题。3.我没有将产品初始化为1。很抱歉,但是在哪里?返回产品后的额外右括号;
和产品应使用1
初始化。非常感谢。它现在起作用了。我有3个错误:1.T第一个for循环的右括号位于返回的乘积之后,而不是数组之后。push(i)。2.我将0作为第一个元素,因此乘积始终为0。将i=0更改为i=1-修复了该问题。3.我没有将乘积初始化为1。