我的JavaScript阶乘函数每次返回0
我正在学习javascript。我已经写了一个非递归函数,我想返回给定数字的阶乘我的JavaScript阶乘函数每次返回0,javascript,Javascript,我正在学习javascript。我已经写了一个非递归函数,我想返回给定数字的阶乘 function factorialize(n) { for(var i = 0; i < n; i++) { n *= i; } return n; } factorialize(5); 函数因式分解(n){ 对于(变量i=0;i
function factorialize(n) {
for(var i = 0; i < n; i++) {
n *= i;
}
return n;
}
factorialize(5);
函数因式分解(n){
对于(变量i=0;i
所以结果应该是120
我一直得到0
请尝试以下方法:
function factorialize(n) {
var p=1;
for(var i = 1; i <=n; i++) {
p*=i;
}
return p;
}
函数因式分解(n){
var p=1;
对于(var i=1;i,您的代码中有两个(嗯,三个)错误:
第一次i
必须从1
(而不是0
)开始,然后上升到f-1
,否则在第一次迭代时,它将被设置为0
(其中f
是需要分解的数字-注意我更改了函数的参数)
其次,不能对
循环的上限和正在计算的结果都使用n
,因此需要另一个变量(这就是为什么我添加了f
)
最后一个函数也将使用因子化(0)
为您提供正确的结果
最后,唯一剩下的是检查负f
您实际上正在这样做
n=(5*0*1*2*3*4*5*6)你应该从1开始到n
function factorialize(n) {
var ret = 1;
for(var i = 1; i <= n; i++) {
ret *= i;
}
return ret;
}
函数因式分解(n){
var-ret=1;
对于(var i=1;i您正在从0循环到n…任何数字乘以0都将是0
另一件事,你循环它直到n,在每个循环中,随着i的增加,它进入无限循环
将其更改为以下内容
函数因式分解(n){
var长度=n;
如果(n==0)返回1;
对于(变量i=1;i
使用您的代码:
- 循环1:n=5*0 | n=0
- 环2:n=0*1 | n=0
- 环3:n=0*2 | n=0
- 循环4:n=0*3 | n=0
- 循环5:n=0*4 | n=0
然后返回0
“i”必须从1开始,否则,在每个循环中乘以0
我不提供解决方案,因为你已经收到了很多正确的答案。这不是阶乘的工作方式…..5*4*3*2*1=120这不是阶乘的工作方式。5!
是5*4*3*2*1
。你正在做的是n*=I
,意思是n=n*I;
。任何时间0
都是0
。你需要调整你的以进行
循环。仅供参考(5*0)+(5*1)+(5*2)+(5*3)+(5*4)+(5*5)
是75。这是一个无限循环,不是吗?这将进入无限循环是的,这是一个无限循环。代码已更新,不再是无限循环。
function factorialize(f)
{
var res,
i;
res = 1;
for( i = 1; i <= f, i++ )
{
res *= i;
}
return res;
}
function factorialize(n) {
var ret = 1;
for(var i = 1; i <= n; i++) {
ret *= i;
}
return ret;
}