Расчет Фибоначчи в 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 вам нужно найти аналогичную стороннюю реализацию