我正在使用Eclipse Oxygen中的调试模式来调试我的代码。
我正在编写一个回溯算法(一个递归函数 - 它自己调用)。
在Backtrack函数中有一个for循环,在for循环结束时,如果满足某些条件,则运行以下代码:Backtrack(csp, index + 1, CopyCSP(currentSolution));
。
我正在调试我的代码,我想进入for循环的下一次迭代,所以当我到达这一行时,我点击“跳过”。但它会介入,并引导我完成下一个Backtrack功能。
我知道它实际上是下一个函数,因为正如你所看到的,index
变量上升了一个,发生了。
为什么会这样?我怎样才能避免这种情况并实际上跨过?如果跳过不能做我想要的,我应该使用什么?
这是我的完整功能代码:
private void Backtrack(CSP csp, int index, CSP currentSolution) {
//BREAKPOINT IS HERE
if(index == csp.numVars) {
currentSolution.PrintSolution();
csp.PrintSolution(currentSolution);
solved = true;
return;
}
for(int test = 0; test < csp.MaxDomainSize(); test++) {
if(solved) {
return;
}
if(test < currentSolution.vars[index].domain.size) {
currentSolution.vars[index].value = currentSolution.vars[index].domain.get(test);
}
else {
continue;
}
boolean satisfied = true;
for(int i = 0; i < csp.constraints.size; i++) {
if(!csp.constraints.get(i).Satisfied(currentSolution.vars, index)) {
satisfied = false;
}
}
if(satisfied) {
System.out.println("Variable " + index + " satisfied by " + currentSolution.vars[index].value + ".");
Backtrack(csp, index + 1, CopyCSP(currentSolution));
}
}
}
我在断点所在地发表了评论。
答案 0 :(得分:0)
我遇到了类似的问题并找到了类似的解决方案,请在此处发布以供参考。
问题:
解决方案:
结果:
如果遇到问题,请提供清晰明了的共享方式,希望对您有所帮助。
答案 1 :(得分:-1)
按照思路说明它是断点......
在大多数情况下,断点会停止控制流。
Eclipse具有禁用单个断点并禁用所有断点的选项。您的情况可能适合条件断点:
我没有使用&#34;点击计数&#34;自己。