System.OutOfMemoryException'试图向List添加元素时抛出
本文关键字:添加 List 元素 OutOfMemoryException System | 更新日期: 2023-09-27 17:49:58
编辑:谢谢大家的帮助,我刚刚意识到我的错误是把number = (40/I)当它应该是number = (number/I)…因为某种原因,我脑子里一直有40这个数字。
在第一个循环中丢失的"i++"是我在试图修复代码时不小心删除的:p
原始:我编写了一个方法,以整数List的形式返回素数的素数因子。然而,当我尝试用元素填充列表时,我得到了一个错误。为什么?
static List<int> PrimeFactors(int number)
{
bool prime = false;
List<int> primeFactors = new List<int>();
for (int i = 2; i < number; )
{
if (number % i == 0)
{
prime = true;
break;
}
}
if (prime)
{
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
primeFactors.Add(i); // <--- Error at this line.
number = (40 / i);
i = 1;
}
}
primeFactors.Add(number);
}
return primeFactors;
}
在第一个循环中,你不迭代i
,所以除非number % 2 == 0
,它将无限循环。
在第二个循环中,您正在重置i = 1
,然后循环。因此,如果是number % 2 == 0
,它将继续向列表中添加项目,直到内存耗尽。
你得到这个错误是因为你的第二个for循环是无止境的,所以你不断添加到你的列表,在某一点你没有足够的内存来容纳它。循环是无止境的,因为i = 1;声明。
还要注意,在第一个循环中还有另一个问题,您在for语句的末尾缺少了一个i++语句。