2016-03-21 26 views
7

Muszę wykonać to ćwiczenie i nie otrzymuję wyników, których potrzebuję.JavaScript: obliczyć sumę wszystkich liczb parzystych w wartościach sekwencji Fibonacciego <10000

Specyfikacje to: Oblicz sumę wszystkich liczb parzystych w sekwencji Fibonacciego dla wartości poniżej 10 000. Pierwsze zsumowane liczby będą następujące: 2, 8, 34, 144, 610.

Mam skrzypce, która produkuje ten wyjściowe: 10, 44, 188, 798, 3382.

var x = 1; 
var y = 2; 
var sum = 0; 
var limit = 10000; 
var evensum = 2; 

while ((x + y) < limit) { 
    sum = x + y; 
    x = y; 
    y = sum; 

    if (sum % 2 === 0) { 
     evensum += sum; 
    } 
    console.log(evensum); 
} 

skrzypce link

Może ktoś mi pomóc dowiedzieć się, część jestem brakujących do wykonania tego ćwiczenia?

Dziękuję bardzo.

AKTUALIZACJADziękuję wszystkim, którzy napisali rozwiązanie. Wszyscy działali świetnie.

+3

możliwość drukowania sum. 10 = 2 + 8, 44 = 10 + 34, 188 = 44 + 144, itd. Innymi słowy, otrzymujesz ekwiwalentne wyniki do specyfikacji, produkując tylko różne wyniki. – Jon

+0

Czy obejrzałeś już 288 wyników już na przepełnieniu stosu? http://stackoverflow.com/search?q=Fibonacci+javascript – Charlie

Odpowiedz

8

Drukujesz sumowanie liczb parzystych. Jeśli chcesz się zalogować każdy nawet fib numer musisz być zalogowany sum zmiennej:

if (sum % 2 === 0) { 
    evensum += sum; 
    console.log(sum); // <---- log here 
} 
// console.log(evensum); 
+7

Zagrajmy w "Wyjaśnij tę odpowiedź". Najpierw wygrywasz, –

+4

Wygrywasz tę grę, madox. –

+1

Dziękuję madox2. To była poprawka, którą musiałem zrobić. Bardzo doceniane. –

1

Wystarczy przesunąć linię console.log spoza pętli while.

while ((x + y) < limit) { 
    sum = x + y; 
    x = y; 
    y = sum; 

    if (sum % 2 === 0) { 
     evensum += sum; 
    } 

    console.log('Sum: ' + sum); 
} 

console.log('Full Sum of even Fibonacci numbers: ' + evensum); 
+0

Witaj ManoDestra, kiedy ruszam console.log poza chwilę, a następnie otrzymuję jedną wartość 3382 zamiast listy. Muszę pokazać listę. Dziękuję Ci. –

+0

Następnie wystarczy przykleić linię console.log do pętli while, aby również wyprowadzić wartość sumy. Prawdopodobnie najlepiej jest oznaczyć każde wyjście pewnym tekstem przed wartościami, aby zakwalifikować różnicę. Na przykład. console.log ("Suma:" + suma); i console.log ("Pełna suma:" + evensum); – ManoDestra

+0

Dziękuję. Widzę, czego mi brakowało. –

1

var i; 
 
var fib = []; // Initialize array! 
 

 
fib[0] = 0; 
 
fib[1] = 1; 
 
for(i=2; i<=20; i++) 
 
{ 
 
    // Next fibonacci number = previous + one before previous 
 
    // Translated to JavaScript: 
 
    fib[i] = fib[i-2] + fib[i-1]; 
 
    if(fib[i]%2==0){ 
 
     document.write(fib[i]+" "); 
 
    } 
 
}

+0

Dziękuję John. Twoje wyniki są doskonałe. –

+0

thx, cieszę się :) – John

1
var x = 0 
var y = 1 
var sum = 0; 
var limit = 10000; 
var evensum = 0; 

while ((x + y) < limit) { 
    sum = x + y; 
    x = y; 
    y = sum; 
    if (sum % 2 == 0) { 
    console.log(sum); 
} 
} 

skrzypce pracy - https://jsfiddle.net/dotnojq8/1/