Эйлер 2. 2 метода, как назвать каждый? - PullRequest
0 голосов
/ 25 января 2012
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);
    }
}

Это то, что я придумал до сих пор.Я пытаюсь придумать 2 способа придумать ответ.

1) Как вы называете два метода?

2) Что вы, ребята, думаете о двух способах?Я не мог проверить это, но любые советы или подсказки (если я ошибаюсь) Не дайте мне ответ:)


Каждый новый термин в последовательности Фибоначчи генерируется путем добавления двух предыдущихтермины.Начиная с 1 и 2, первые 10 терминов будут:

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

Рассматривая слагаемые в последовательности Фибоначчи, значения которых не превышают четырех миллионов, найдите сумму четных слагаемых.

1 Ответ

1 голос
/ 25 января 2012

Сделайте так, чтобы они оба static работали так:

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

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

и звоните им с Main() вот так:

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