title: Fibonacci sequence sum of even numbers
body: <p>I ran across this problem here on stackoverflow:</p>
  
  <blockquote>
    <p>"I'm having some trouble with this problem in <a href="https://projecteuler.net" rel="nofollow">Project Euler</a>.
    Here's what the question asks:
    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: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... Find the sum of all the even-valued terms in the sequence which do not exceed four million."</p>
  </blockquote>
  
  <p>The top answer was this(which does not compile for me in VS2010...why?): </p>
  
  <pre><code>    IEnumerable&lt;int&gt; Fibonacci()
      {
          int n1 = 0;
          int n2 = 1;
  
          yield return 1;
          while (true)
          {
            int n = n1 + n2;
            n1 = n2;
            n2 = n;
            yield return n;
          }
      }
  
      long result=0;
  
      foreach (int i in Fibonacci().TakeWhile(i =&gt; i&lt;4000000).Where(i % 2 == 0))
      {
          result+=i;
      }
      Console.WriteLine(result);
  </code></pre>
  
  <p>I decided to try it for myself before looking for an answer and came up with this(please tell me why or why not this is a good or bad way of solving this problem):</p>
  
  <p>I wrote it in a class because I could add much more to the class in the future than just solving a single Fibonacci problem.</p>
  
  <pre><code>class Fibonacci
  {
      private int prevNum1 = 1;
      private int prevNum2 = 2;
      private int sum = 0;
  
      public int GetSum(int min, int max)
      {
          prevNum1 = min;
          prevNum2 = prevNum1 + prevNum1;
          if (prevNum1 % 2 == 0)
          {
              sum += prevNum1;
          }
          if (prevNum2 % 2 == 0)
          {
              sum += prevNum2;
          }
          int fNum = 0;
          while (prevNum2 &lt;= max)
          {
              fNum = prevNum1 + prevNum2;
              if (fNum % 2 == 0)
              {
                  //is an even number...add to total
                  sum += fNum;
              }
              prevNum1 = prevNum2;
              prevNum2 = fNum;
  
          }
  
          return sum;
      }
  
  }
  
          Fibonacci Fib = new Fibonacci();
          int sum = Fib.GetSum(1, 4000000);
  
          Console.WriteLine("Sum of all even Fibonacci numbers 1-4,000,000 = {0}", sum);
  </code></pre>
  
  <p>Again, I'm looking for an answer as to why this is a good or bad way to solve this problem. Also why the first solution does not compile. I'm a beginning programmer and trying to learn. Thanks!</p>