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 ?:

<code>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

}
</code>

Przy okazji, jakie jest ograniczenie tego, jak głęboko możemy nazywać te funkcje?

questionAnswers(6)

yourAnswerToTheQuestion