Euler 2. 2方法如何调用每一个?

时间:2012-01-25 18:24:00

标签: c# fibonacci

class Program
{

    static void Main(string[] args)
    {
        Console.WriteLine("Fib 1: ");

        Console.ReadLine();
    }
    long fibonacci1()
    {
        long a = 1, b = 2, c, answer = 0;
        for (int i = 0; answer < 4000000; i++)
        {
            c = a + b;
            if (c % 2 == 0)
            {
                answer += c;
            }
            a = b + c;
            if (a % 2 == 0)
            {
                answer += a;
            }
            b = a + c;
            if (b % 2 == 0)
            {
                answer += b;
            }
        }
        return answer;
    }

    void fibonacci2()
    {
        long[] y = new long [1000000];
        long x = 2;
        long a = y[x - 2] = 1;
        long b = y[x - 1] = 2;
        long n = y[x];
        long answer = 0;

        for (x=2; answer < 4000000; x++)
        {
            n = a + b;
            if(n % 2 == 0)
            {
                answer += n;
            }
        }
        Console.WriteLine("Fib 2: " + answer);
    }
}

这是我到目前为止所提出的。我想找出两种方法来提出答案。

1)你怎么称呼这两种方法?

2)你们对这两种方式有何看法?我无法测试它,但任何建议或提示(如果我错了)不要给我答案:))


Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。从1和2开始,前10个术语将是:

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

通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和。

1 个答案:

答案 0 :(得分:1)

将它们设为static这两个函数:

static long fibonacci1()
{
  ...
  return answer;
}

static long fibonacci2()
{
  ...
  return answer;
}

并从Main()这样调用它们:

{
    long a1 = fibonacci1();
    long a2 = fibonacci2();
    Console.Writeline(...);
}