我在Java中实现了一个递归函数。在x个循环之后,该函数总是失败。我找不到它失败的原因。我一步一步地调试它,但是当它失败时,我不知道为什么。我可以得到帮助吗?代码段
public void Eight_ConnectedComponent_Spreading_Recursion(int r, int c){
Size s = ROI_GRAY.size();
//Make 8 points of neighbours
Vector<Point> filldata = new Vector<Point>();
byte[] data = new byte[1];
for(int row = -1; row < 2; row++){
for(int col = -1; col < 2; col++){
if((r+row >= 0 && r+row < s.height) && (c+col >= 0 && c+col < s.width))
{
ROI_GRAY.get(r+row, c+col, data);
if(data[0] == WHITE)
filldata.add(new Point( r+row, c+col));
}
}
}
if(filldata.size() > 0){
for (int row = 0; row < filldata.size() ; row++ ) {
ROI_GRAY.put((int)filldata.get(row).x, (int)filldata.get(row).y, (byte)BLACK);
}
while(filldata.size() > 0) {
if((int)filldata.get(0).x != r && (int)filldata.get(0).y != c)
Eight_ConnectedComponent_Spreading_Recursion((int)filldata.get(0).x, (int)filldata.get(0).y);
filldata.remove(0);
}
}
filldata.trimToSize(); //
return;
}
答案 0 :(得分:0)
请移植您的LogCat消息。
当你说“x循环后总是失败”时,我认为由于递归级别过高,你可能会遇到StackOverflowError。这通常意味着您的最终条件没有按预期工作。