ЕСЛИ мы предполагаем, что вам нужно сохранить предыдущие результаты Фибоначчи в списке (если есть какая-либо цель)?
При конфигурации по умолчанию максимальный размер объекта CLR составляет 2 ГБ, даже на 64-битной.
вы сохраняете результаты Фибоначчи в List
, который занимает память.вы получаете OutOfMemoryException
Когда вы нажимаете 2 ГБ
Вам необходимо превысить ограничение 2 ГБ.Для этого вам нужно добавить gcAllowVeryLargeObjects
в app.config
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
С другой стороны, если вам не нужны все предыдущие значения последовательности Фибоначчи, тогда
BigInteger f2 = BigInteger.Parse(Console.ReadLine());
BigInteger f1 = BigInteger.Parse(Console.ReadLine());
BigInteger f = BigInteger.Parse(Console.ReadLine());
BigInteger N = BigInteger.Parse(Console.ReadLine());
if ((a < -2000000000) || (b < -2000000000) || (c < -2000000000) || (a > 2000000000) || (b > 2000000000) || (c > 2000000000) || (N > 15000) || (N < 1))
{
throw new Exception("Argument out of range");
}
while (fibonacciNumbers.Count <= N)
{
var fn = f2 + f1 + f;
f2 = f1;
f1 = f;
f = fn;
}
Console.WriteLine(fn);