Stack overflow error java recursion