我有一段代碼:遞歸和StackOverflow - 我應該用什麼來代替?
private void colorize(int color, int x, int y) {
visited[x][y] = true;
if (x + 1 < d)
if (board[x + 1][y] == board[x][y] && visited[x + 1][y] == false)
colorize(color, x + 1, y);
if (x - 1 >= 0)
if (board[x - 1][y] == board[x][y] && visited[x - 1][y] == false)
colorize(color, x - 1, y);
if (y + 1 < d)
if (board[x][y + 1] == board[x][y] && visited[x][y + 1] == false)
colorize(color, x, y + 1);
if (y - 1 >= 0)
if (board[x][y - 1] == board[x][y] && visited[x][y - 1] == false)
colorize(color, x, y - 1);
board[x][y] = color;
}
我把它叫做:colorize(int random, int 0, int 0)
。即使是一張小桌子(20x20),這也給我提供了stackoverflow。我怎樣才能做到這一點沒有遞歸?
我看不到對d的引用。什麼是d? –
將遞歸算法轉換爲迭代算法。 –
通常,一個計算器會顯示您錯過了一個基本情況。您應該使用調試器(或適當的SOP語句)運行此代碼以查找問題。 –