我用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;
}
1条答案
按热度按时间szqfcxe21#
请输入您的logcat消息。
当你说“总是在x个循环数之后失败”时,我觉得你可能会遇到一个stackoverflower错误,因为递归的级别太多了。这通常意味着你的最终状态没有按预期工作。