对于JS中的循环只返回第一个值?

时间:2014-05-06 19:20:23

标签: javascript loops for-loop

我在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));

4 个答案:

答案 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));