我目前正在做一个阶乘脚本,我已经使用while循环完成了它。但是,在使用所述解决方案之前,我尝试使用for循环,但没有得到相同的结果。这就像我的for循环不存在,每当我用不同的值调用函数时,它只取累加器的第一个值(即1,你会在代码中看到)。
我觉得我犯了一个愚蠢的错误并且没有意识到它是什么但是我已经没有解决方案了,所以如果有人能帮我,那将非常感激。谢谢!
function factorial(num) {
if (num === 0) {
return 1; //Factorial of 0 is equal to 1.
} else {
var accumulator = 1;
for (i = num; i < 1; i--) { //continously decreases until reaching 1
accumulator *= i; //redefines value multiplying it with the previous one.
}
return accumulator;
}
}
答案 0 :(得分:0)
i >= 1
?
for (i = num; i >= 1; i--)
....
大人也应该工作,因为1什么都不做。
答案 1 :(得分:0)
for (i = num; i < 1; i--)
将其更改为for (i = num; i > 1; i--)
。对于循环运行,直到条件为真。在你的情况下,i < 1
会像false
一样(如果数字大于1),那么就不会进行循环。
for([initialization]; [condition]; [final-expression])
声明在每次循环迭代之前要计算的表达式。如果此表达式的计算结果为true,则执行语句。
如果表达式的计算结果为false,则执行将跳转到for结构后面的第一个表达式。
答案 2 :(得分:0)
在你的程序中,你想要创建一个循环,它应该运行直到i的值大于1,这样你的累加器变量可以包含所有数字的乘积,直到1。 / p>
但在你的循环中,你错误地使用了&#39; &lt; &#39;而不是&#39; &gt; &#39;,因为 for 循环条件永远不会变为真,并且您的循环没有执行。
替换您的&#39; &lt; &#39;在 for(i = num; i&lt; 1; i - ),&#39; &gt; &#39;
快乐编码