mscorlib.dll中的System.StackOverflowException

时间:2016-03-01 14:55:46

标签: c# integer unhandled-exception mscorlib

我正在接收

  

未处理的类型' System.StackOverflowException'   发生在mscorlib.dll'

运行以下代码时出现

错误。我无法弄清楚我哪里出错了以及如何纠正它。有人可以帮我吗?

代码应该通过整数列表进行过滤,整数列表中给定整数的一组与目标数字匹配;将整数组放入List中,然后将该列表放入另一个列表中,以便该过程继续使用剩余的数字。

任何和所有帮助将不胜感激。感谢

user_thoughts

2 个答案:

答案 0 :(得分:0)

这段代码对我来说很可疑。 " nextNotIncluded" list不会变小,所以你最终会得到无限递归。

 else if (currentSum + nextValue > t)
 {
     nextNotIncluded.Remove(nextValue); // ** Remove?
     nextNotIncluded.Add(nextValue);    // ** Add Back?
     t = t - 50;
     RecursiveSolve(t, currentSum + nextValue, nextIncluded, nextNotIncluded, startIndex++);
 }

你的意思是?

 else if (currentSum + nextValue > t)
 {
     nextNotIncluded.Remove(nextValue); // remove from nextNotIncluded
     nextIncluded.Add(nextValue);       // add to nextIncluded
     t = t - 50;
     RecursiveSolve(t, currentSum + nextValue, nextIncluded, nextNotIncluded, startIndex++);
 }

编辑:啊哈,这是另一个问题。在Solver构造函数中,您没有设置成员变量t。这可能无法解决实际的SO异常,但它可以让您更接近。

public List<List<int>> Solve(int goal, int[] elements)
 {
      /*int*/ t = goal;

答案 1 :(得分:0)

你们对错误的区域是正确的,但不是100%正确。

我想出了解决方案,谢谢你的帮助。当我没有添加“nextValue”时,问题似乎已得到纠正。现在的&#39;当前的&#39;当我打电话给'RecursiveSolve&#39;线程再次。

Plugin