我正在从coderbyte那里进行挑战,您必须创建一个函数来计算给定数字的阶乘,这不是我的可行解决方案。
function firstFactorial(num) {
for (var i = num; i == 1; i--) {
num = num * i;
}
return num;
}
它只是返回我作为参数传入的任何数字,而我正试图了解问题所在。与循环有关还是与变量作用域有关?
答案 0 :(得分:1)
i == 1
处于循环状态,对于除1以外的所有数字始终为false,因此它将始终返回与结果相同的数字。
i = num
应该是i = num-1
才能获得正确的阶乘。
function FirstFactorial(num) {
for(var i = num-1; i >= 1; i--){
num = num * i;
}
return num;
}
console.log( FirstFactorial(5))
答案 1 :(得分:0)
您的for
循环有点混乱。现在应该可以了。
function factorial(num){
for(var i = num - 1; i > 0; i--){
num *= i;
}
return num;
}
console.log(factorial(5));
答案 2 :(得分:0)
您的问题是您有一个循环条件i == 1
。对于阶乘,应为i >= 1
或i > 1
,具体取决于您使用的算法。我对阶乘函数的看法是:
function calculate(factorial) {
var newFactorial = factorial;
while (factorial > 1) {
factorial--;
newFactorial *= factorial;
}
return newFactorial;
}