 Borbat -5 years ago 124
Ruby Question

# Sum of Fibonacci even number

I'm currently working on small ruby projects from project Euler site. I was given a task to sum even fibonacci numbers that are less than 4 millions. Unfortunately there is a small bug in my code, because when I change the limit e.i. to 100, it prints 188 instead of 44. Surprisingly this program gives the right answer but i don't really know in what way my code is wrong.

``````a=[]; a=1; a=1;
i = 1
while a[-1] < 608
a[i+1]=(a[i] + a[i-1])
i +=1
end
x = 0
a.each do |num|
if num % 2 == 0
x += num
end
end
print "The sum of even Fibonacci number is: #{x}"
`````` T. Claverie
It turns out that after the generation step, the array is `[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]`, this explains your wrong result 188 = 144+44.
So, your code works only when the last element generated is odd, which is the case in Euler's problem test. In order to correct that, change your second iteration from `a.each do ... end` to `a[0...-1].each do ... end` In order to iterate through the array except the last element.