Расчет Фибоначчи в C#

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

ulong num = 1;
ulong lnum = 0;
uint x = 1;

private void Form1_Load(object sender, EventArgs e)
{
    listBox1.Items.Add("(0) " + 1);
}

private void timer1_Tick(object sender, EventArgs e)
{
    if (x <= 1000)
    {
        ulong newnum = lnum + num;
        listBox1.Items.Add("(" + x + ") " + newnum);
        listBox1.SetSelected((int)x, true);
        lnum = num;
        num = newnum;
        x++;
     }
}

Я делаю так, чтобы я мог смотреть, как складываются числа, добавляя их в список 1 за раз.

1 ответ

ulong слишком мало для фибоначчи. Вам нужно использовать что-то большее. В.NET 4 добавлен BigInteger, который должен учитывать произвольный размер числа.

Для более низких версий.NET вам нужно найти аналогичную стороннюю реализацию

Другие вопросы по тегам