It's called mutual recursion. first() calls second() which calls first() which calls second() which calls first() ... and so on ad infinitum. Each one of these calls uses up a chunk of memory on the main thread's stack. Eventually the program uses up all the memory available to the stack and the JVM throws a java.lang.StackOverflowError.
Don't do it!
There are legitimate uses for mutual recursion, though I can't think of one off the top of my head, but you need a base condition to ensure that the recursion will stop naturally at some point, hopefully before the stack runs out!