我有下面的代码。我创建了一个包含一百万和一个成员的列表(也尝试使用数组)。默认情况下,它们都具有值 0。它应该像多维数组一样工作,但没有必要,因为第一个“列”必须是 1-1.000.000 之间的数字。为了让生活更轻松,我创建了 1.000.001 个成员以避免使用第 0 位。在某个时刻,我必须使用这个列表的一个成员,该成员由一个变量寻址:list[n],并且为了避免问题,这只发生在 n < 1.000.000 时。由于有 0-1.000.000 的成员,我认为没关系,但我的程序在一段时间后仍然崩溃,错误代码为 ArgumentOutOfRangeException。我在这里想念什么?
int highestCount = 0;
int highestNum = 0;
List<int> list = new List<int>();
for(int j = 0; j <= 1000001; j++)
{
list.Add(0);
}
for (int i = 2; i < 1000000; i++)
{
int count = 0;
int number = i;
do
{
if (i % 2 == 0)
{
number = number / 2;
if (number < 1000000)
{
if (list[number] != 0)
{
count += list[number];
break;
}
else
{
count++;
}
}
else { count++; };
}
else
{
number = (number * 3) + 1;
if (number < 1000000)
{
if (list[number] != 0) //program dies here
{
count += list[number];
break;
}
else
{
count++;
}
}
else { count++; };
}
} while (number > 1);
list[i] = count;
if (count > highestCount)
{
highestCount = count;
highestNum = i;
}
}
MessageBox.Show(highestNum.ToString());