2016-02-26 58 views
0

我試圖獲取並打印所有填滿if條件的值的總和,但目前爲止沒有成功。如何在JavaScript中添加'for'循環的結果?

此外,有沒有一種方法來劃分fib()與最大值,比如999999,而不是通過numMax操作分隔它?

fib = function(numMax) { 
    for (i = 0, j = 1, k = 0; k < numMax; i = j, j = x, k++) { 
     x = i + j; 
     if (x % 2 === 0) { 
      sum += x; 
      console.log(x); 
     } 
    } 
}; 
fib(32); 
+3

您正在尋找[了'return'聲明。(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return) – Pointy

+0

我看。你能舉例說明我如何在這種情況下應用它?我只能打印第一個數字。 – tklein

+1

我猜是什麼問題?目前控制檯日誌是將這些值打印到控制檯。 – Damon

回答

1

你的函數可以return一個值,你可以在一個變量存儲:

fib = function(numMax){ 
    var sum = 0; 
    for(i=0,j=1,k=0; k<numMax;i=j,j=x,k++){ 
    var x = i + j; 
    if (x % 2 === 0){ 
     sum += x; // This is the same like sum = sum + x; 
    } 
    } 
    return sum; // Let's return the calculated sum as the result of the function 
}; 
var result = fib(32); // result contains the value the function returned 
console.log(result); 

我不知道你問題的第二部分。你想要,那numMax不能大於999999?

fib = function(numMax){ 
    if (numMax > 999999) { 
    numMax = 999999; 
    } 

    var sum = 0; 
    for(i = 0, j = 1, k = 0; k < numMax; i = j, j = x, k++){ 
    var x = i + j; 
    if (x % 2 === 0){ 
     sum += x; // This is the same like sum = sum + x; 
    } 
    } 
    return sum; // Let's return the calculated sum as the result of the function 
}; 
var result = fib(32); // result contains the value the function returned 
console.log(result); 
+0

是的,我正在尋找一種解決方案,不需要我事先知道我需要迭代循環32次,以免去斐波那契數列超過400萬。 – tklein

+1

所以,如果'sum'比例如'sum'更大,你想停止迭代。 400萬?比你應該看看[while-loops](http://www.w3schools.com/js/js_loop_while.asp)。 –

+0

感謝您的回答,第一部分釘住了它。至於第二個,實際上我想'k'是'<4000000',但我不知道如何去做,而不改變我迄今爲止的整個結構。 – tklein