我在JS中创建了一个循环来计算阶乘 - 但是,我只是得到for循环的第一个值,而不是得到阶乘。在下面的代码中,我只是为show(FirstFactorial(5))获得1;
关于这里有什么问题的任何想法......?
function FirstFactorial (num) {
var myVar=1;
for(var i=1; i<=num; i++){
myVar=myVar*i;
return myVar;
}
};
show(FirstFactorial(5));
答案 0 :(得分:4)
你的循环实际上在它第一次到达return
时返回,并且从未运行过。这就是返回的工作原理,返回到它被调用的地方。最好在循环完成后将返回值设置为运行。
function FirstFactorial (num) {
var myVar=1;
for(var i=1; i<=num; i++){
myVar=myVar*i;
}
return myVar;
};
show(FirstFactorial(5));
这是结果的JSFiddle。
答案 1 :(得分:2)
通过使用递归,您可以实现更小的代码并消除对for loop
的需求:
function factorial(n) {
return n > 1 ? n * factorial(n-1) : (n == 0) ? 1 : n;
}
console.log(factorial(5));
返回:
120
jsFiddle:http://jsfiddle.net/DuLpr/2/
答案 2 :(得分:1)
你需要在循环之外使用return语句:
function FirstFactorial (num) {
var myVar=1;
for(var i=1; i<=num; i++){
myVar=myVar*i;
}
return myVar;
};
答案 3 :(得分:1)
将for语句置于for循环之外:
function FirstFactorial (num) {
var myVar=1;
for(var i=1; i<=num; i++){
myVar=myVar*i;
}
return myVar;
};
show(FirstFactorial(5));