为什么我的递归函数循环失败?

h7appiyu  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(275)

我用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;
}
szqfcxe2

szqfcxe21#

请输入您的logcat消息。
当你说“总是在x个循环数之后失败”时,我觉得你可能会遇到一个stackoverflower错误,因为递归的级别太多了。这通常意味着你的最终状态没有按预期工作。

相关问题