2016-05-19 8 views
-2
Arbeits

Hier ist ein Link zu meinem Github https://github.com/kuanhsuh/projecteuler/blob/master/2redo.rbProjekt Euler Q.2 Ruby-a [i], wenn a [i]% 2 == 0 nicht

Meine Frage in Zeile 26:

c << a[i] if a[i] % 2 == 0 

Diese Methode ignoriert die letzte gerade Zahl der Fibonacci-Folge, und ich weiß nicht warum.

Mein Array A hat 3524578, und dies sollte zu Array C geschoben werden, aber es wird nicht gedrückt.

Wenn ich die select-Methode in Zeile 29 verwende. Es funktioniert gut. Also wie kommt der Code in Zeile 26 nicht funktioniert. Danke

+0

von Stack-Überlauf Regeln, die Frage als autarke wie möglich sein sollte, mit dem minimalen Beispiel benötigt, um das Problem innen zu demonstrieren die Frage selbst; Links sind nur Bonus. Bitte beachten Sie dies in der Zukunft. – Amadan

+0

Bitte respektieren Sie die Zeit der Leute, die Ihnen helfen. Ihr Code sollte so einfach wie möglich für sie zum Lesen und Verstehen sein. Dies bedeutet: beschreibende Bezeichner (nicht "a", "b", "c") und deaktivierter Debug-Code entfernt. Wenn Sie auf große Ganzzahlen verweisen, ist es hilfreich, Unterstriche in Ihrem Code und Ihrer Dokumentation zu verwenden, z. B. 4_000_000 und 3_524_578. –

+0

(In Bezug auf meinen vorherigen Kommentar, ist es in Ruby legal, Unterstriche in numerischen Konstanten zu verwenden.) –

Antwort

0

Hier sind die berechneten Werte für i, i = 27, 28, 29, 30. Rückruf limit #=> 4_000_000.

i #=> 27 
a[27] + a[28] #=> 514_229 + 832_040 #=> 1_346_269 < 4_000_000 #=> true # so continue 
c.last #=> 196_418 #=> unchanged 
b #=> 1_346_269 
a #=> [..., 514229, 832040, 1346269] 

i #=> 28 
a[28] + a[29] #=> 832040 + 1346269 #=> 2178309 < 4000000 #=> true, so continue 
c.last #=> 832_040 # c.last changes 
b #=> 2_178_309 
a #=> [..., 832040, 1346269, 2178309] 

i #=> 29 
a[29] + a[30] #=> 1346269 + 2178309 #=> 3524578 < 4000000 #=> true, so continue 
c.last #=> 832_040 # unchanged 
b #=> 3_524_578 
a #=> [..., 1346269, 2178309, 3524578] 

i #=> 30 
a30 + a31 #=> 2178309 + 3524578 #=> 5702887 < 4000000 #=> false, so stop. 

Dies zeigt, warum c nicht aktualisiert, wenn i30 gleich ..

+0

Ok vielen Dank !! –

Verwandte Themen