gpt4 book ai didi

java - Flood Fill 算法导致 StackOverFlowError

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:39 26 4
gpt4 key购买 nike

我正在使用 Java 编写一个简单的绘图应用程序。我正在尝试使用 Flood Fill 算法的递归实现作为我的“桶填充”工具。

但是,这总是给我一个StackOverFlowError。 (无论我使用“桶填充工具”的区域有多小)。

编辑:更改代码以提高效率。仍然是同样的错误。

代码如下:

public void floodFill(int x, int y, Color targetColor, Color replacementColor) throws AWTException{

pixelColor = robot.getPixelColor(x,y);

g.setColor(replacementColor);
g.fillRect(x, y, 1, 1);

if(robot.getPixelColor(x-1, y).equals(targetColor))
floodFill(x-1, y, targetColor, replacementColor);

if(robot.getPixelColor(x+1, y).equals(targetColor))
floodFill(x+1, y, targetColor, replacementColor);

if(robot.getPixelColor(x, y-1).equals(targetColor))
floodFill(x, y-1, targetColor, replacementColor);

if(robot.getPixelColor(x, y+1).equals(targetColor))
floodFill(x, y+1, targetColor, replacementColor);

}

我想知道是否有一种方法仍然可以对该算法使用递归,并且不会出现此错误。

如果不是,该算法有哪些可能的非递归实现,我可以在我的程序中使用?

最佳答案

您还必须检查已经设置的目标颜色,否则您会一次又一次地覆盖相同的目标颜色。

关于java - Flood Fill 算法导致 StackOverFlowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com