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

时间:2014-03-11 10:07:02

标签: java android recursion

我在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 个答案:

答案 0 :(得分:0)

请移植您的LogCat消息。

当你说“x循环后总是失败”时,我认为由于递归级别过高,你可能会遇到StackOverflowError。这通常意味着您的最终条件没有按预期工作。