I noticed the recursion issue as well... I assumed that the execution would just hang as opposed to cleanly exiting. I take it from your response that Java looks for this and disallows it upfront?
An error (in contrast to an exception) is no clean exit. Java doesn't check this, it can't, that would solve the halting problem. The stackoverflowerror arises, because the stack is used to save the addresses where execution goes back to, once you climb up the recursion ladder again.
@M1lak0: I have no idea what you are doing. Make sure you compiled the most recent version of your code and post your code again, please.