# What is going wrong?

## Recommended Posts

Amaz1ng    131
[code]
#include <iostream>
#include <conio.h>

using namespace std;

void main()
{
long sum = 0, next = 0, prev = 1, curr = 2;

do
{
next = curr + prev;
prev = curr;
curr = next;

if(curr % 2 == 0)
{
sum += curr;
}
}
while(curr < 4000000);

cout << sum;

getch();
};
[/code]

Just curious why this is not working. It's from project Euler:

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

[center]1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...[/center]

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

##### Share on other sites
haegarr    7372
What do you mean with "this is not working"? A runtime error? Or just a wrong result?

Regarding to the last possibility I see at least this: The initial value of curr is 2 and hence even, but it is not considered in the summation. Initialize sum with 2 to overcome this issue.

##### Share on other sites
powell0    808
The Fibonacci sequence starts with two 1s. So the first ten terms are:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55

*Edit: Never mind. I missed the "sum of even terms" part. Reading comprehension fail. Edited by powell0

##### Share on other sites
Amaz1ng    131
It's giving an incorrect result.

##### Share on other sites
Amaz1ng    131
[quote name='powell0' timestamp='1307036098' post='4818758']
The Fibonacci sequence starts with two 1s. So the first ten terms are:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55

*Edit: Never mind. I missed the "sum of even terms" part. Reading comprehension fail.
[/quote]

lol actually that worked....the numbers need to initially be set to 1.