Java。足夠堆棧溢出?
10 000遞歸無效函數調用引用和兩個整數作爲參數後,我得到堆棧溢出錯誤是正常的嗎?
得到6GB RAM內存,嘗試通過IDE和命令行運行。我很確定代碼是正確的,遞歸應該完成。
這是關於瓷磚地圖編輯器的填充工具。它開始於某個瓷磚上,如果同時出現的瓷磚屬於同一類型並且不會再回來,則會上下左右移動。
嘗試不同的方法,這裏是一個額外的布爾表指示是否[X]的訪問[Y]瓷磚和遞歸完成後更換標磚:
public void fillRec(Tile t, int column, int row) {
if (affected[column][row] || t.getName() != pattern)
return;
/*t.replaceMe(editor.currentTileButton.spawnTile(column, row,
editor.tileMap));*/
affected[column][row] = true;
if (column < editor.tileMap.tilesX - 1) {
fillRec(editor.tileMap.tiles[column + 1][row], column + 1, row);
}
if (column > 0) {
fillRec(editor.tileMap.tiles[column - 1][row], column - 1, row);
}
if (row < editor.tileMap.tilesY - 1) {
fillRec(editor.tileMap.tiles[column][row + 1], column, row + 1);
}
if (row > 0) {
fillRec(editor.tileMap.tiles[column][row - 1], column, row - 1);
}
}
這工作得很好用〜75x75地圖,功能也取代了瓷磚,並在他們的身體中做了其他重要的東西。
''我很確定代碼是正確的,並且遞歸應該完成。「 - 但沒有相關的代碼,我們不能確定任何事情。如果我是你的鞋子,如果我的代碼沒有按預期行事,我也不會對正確性做任何假設。請考慮發佈一個體面的[mcve]讓我們測試和審查。 –
你的程序的目標是什麼? – developer
發佈您的代碼。一般來說,遞歸需要足夠的「堆棧」大小。 –