Javascript 因式分解/组合在不应该的情况下产生NaN
我在解y选择p组合。我是Javascript的初学者 我给出了阶乘函数的定义: 它被指定做x*(x-1)*(x-2)…*一,Javascript 因式分解/组合在不应该的情况下产生NaN,javascript,combinations,factorial,Javascript,Combinations,Factorial,我在解y选择p组合。我是Javascript的初学者 我给出了阶乘函数的定义: 它被指定做x*(x-1)*(x-2)…*一, 函数阶乘(z) { var乘积=z; 如果(z==0) { 返回1; } 其他的 { 对于(var m=1;m
函数阶乘(z)
{
var乘积=z;
如果(z==0)
{
返回1;
}
其他的
{
对于(var m=1;m
然后我有一个函数,它使用阶乘函数
function placeBoxes()
{
var ids = 0;
for (var y = 0; y < (numOfRows-1); y++)
{
for (var p = 0; p < (y+1); p++, ids++)
{
x = document.createElement('div');
x.className = "box";
x.id = ids;
x.innerHTML = (factorial(y))/((factorial(y-p))*(factorial(p)));
document.getElementById('holdsBoxes').appendChild(x);
}
}
}
函数placeBoxes()
{
var-id=0;
对于(变量y=0;y<(numorrows-1);y++)
{
对于(var p=0;p<(y+1);p++,ids++)
{
x=document.createElement('div');
x、 className=“box”;
x、 id=id;
x、 innerHTML=(阶乘(y))/((阶乘(y-p))*(阶乘(p));
document.getElementById('holdsbox').appendChild(x);
}
}
}
它应该选择组合。出于实验目的,numOfRows实际上介于5和30之间。0C0 1C0 1C1 2C0 2C1 2C2等等。。。
这相当于1,1,1,1,2,1等等
有人知道我做错了什么吗?我得到的是NaN,而不是第二、第三、第五、第八、第九和许多其他值的值
编辑:谢谢大家!问题解决了。阶乘函数出错。for(var m=1;mfor (var m = 1; m < z; m++)
{
product = m * product;
return product;
}
{
产品=m*产品;
退货产品;
}
您在循环中返回的产品
。你确定吗?您不想将产品返回到循环之外吗
这也是您的NaN
的原因。如果z
为1怎么办?然后m
就是m<1
,这总是错误的。所以循环体永远不会被调用。并且从不调用return语句
因此,函数返回未定义的
。和未定义*1==NaN
更改
for (var m = 1; m < z; m++)
{
product = m * product;
return product;
}
for(var m=1;m
到
for(var m=1;m
你永远不会完成循环我认为阶乘函数是不正确的。尝试将其更改为:
function factorial(z)
{
var product = z;
if (z == 0)
{
return 1;
}
else
{
for (var m = 1; m < z; m++)
{
product = product*(product - m);
}
return product;
}
}
函数阶乘(z)
{
var乘积=z;
如果(z==0)
{
返回1;
}
其他的
{
对于(var m=1;m
*=
是无效的JavaScript。此外,您以前使用的m*乘积进行阶乘的方法也可以使用-这只是一种替代方法。正如其他人指出的那样,错误在于您的返回在for循环内。
for (var m = 1; m < z; m++)
{
product = m * product;
}
return product;
function factorial(z)
{
var product = z;
if (z == 0)
{
return 1;
}
else
{
for (var m = 1; m < z; m++)
{
product = product*(product - m);
}
return product;
}
}