Jak uniknąć StackOverflowError dla funkcji rekurencyjnej
Piszę funkcję, która zadzwoni do około 5000 razy. Oczywiście, dostajęStackOverflowError
. Czy jest jakiś sposób, aby przepisać ten kod w dość prosty sposób ?:
void checkBlocks(Block b, int amm) {
//Stuff that might issue a return call
Block blockDown = (Block) b.getRelative(BlockFace.DOWN);
if (condition)
checkBlocks(blockDown, amm);
Block blockUp = (Block) b.getRelative(BlockFace.UP);
if (condition)
checkBlocks(blockUp, amm);
//Same code 4 more times for each side
}
Przy okazji, jakie jest ograniczenie tego, jak głęboko możemy nazywać te funkcje?