Java で再帰的な Flood 塗りつぶしアルゴリズムを使用して、画像の一部の領域を塗りつぶしています。イメージが非常に小さい場合は問題なく動作しますが、イメージが大きくなると、JVM からスタック オーバー フロー エラーが発生します。
これが、独自のスタックで Flood Fill を使用してメソッドを再実装する必要がある理由です。(私は、この種の場合にそれを行うための最良の方法であることを読みました)
誰かがそれをコーディングする方法を説明できますか? (手元にコードがない場合は、アルゴリズムの疑似コードで問題ありません)
私はインターネットでたくさん読んだことがありますが、よく理解できませんでした。
編集:再帰コードを追加しました
public void floodFill(int x, int y, Color targetColor,Color replacementColor) {
if (img.getRGB(x, y) != targetColor.getRGB()) return;
img.setRGB(x, y, replacementColor.getRGB());
floodFill(x - 1, y, targetColor, replacementColor);
floodFill(x + 1, y, targetColor, replacementColor);
floodFill(x, y - 1, targetColor, replacementColor);
floodFill(x, y + 1, targetColor, replacementColor);
return;
}
ありがとう!