Я использую алгоритм рекурсивного заполнения Flood в Java, чтобы заполнить некоторые области изображения.
С очень маленькими изображениями это работает нормально, но когда изображение становится больше, JVM выдает ошибку Stack Over Flow.
Вот почему я должен переопределить метод, используя 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;
}
Спасибо!