我正在接收
运行以下代码时出现未处理的类型' System.StackOverflowException' 发生在mscorlib.dll'
错误。我无法弄清楚我哪里出错了以及如何纠正它。有人可以帮我吗?
代码应该通过整数列表进行过滤,整数列表中给定整数的一组与目标数字匹配;将整数组放入List中,然后将该列表放入另一个列表中,以便该过程继续使用剩余的数字。
任何和所有帮助将不胜感激。感谢
user_thoughts
答案 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