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;
        }

System.OutOfMemoryException'试图向List添加元素时抛出

在第一个循环中,你不迭代i,所以除非number % 2 == 0,它将无限循环。

在第二个循环中,您正在重置i = 1,然后循环。因此,如果是number % 2 == 0,它将继续向列表中添加项目,直到内存耗尽。

你得到这个错误是因为你的第二个for循环是无止境的,所以你不断添加到你的列表,在某一点你没有足够的内存来容纳它。循环是无止境的,因为i = 1;声明。

还要注意,在第一个循环中还有另一个问题,您在for语句的末尾缺少了一个i++语句。