вычисление Фибоначчи в 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 за раз.


person Michael Guercia    schedule 16.12.2012    source источник


Ответы (1)


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

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

person Euphoric    schedule 16.12.2012