Binario recursivo(ayuda)

Bueno amigos el caso es que no se donde esta el error en el programa, ya que al mandar el 8(a proposito, me debe imprimir 1000), me imprime 000, donde esta el error?
gracias

public class binariorecur
{

       
       
        int rev(int n)
        {
            if(n>1)
            {
                System.out.print(""+n%2);
            }
            if(n<1)            
                return n;
            return rev(n/2);
        }
       
   public static void main( String args[] )
   {
           binariorecur obj= new binariorecur();
          // System.out.println(obj.rev(8));
           
           obj.rev(8);
           System.out.println();
     
   }
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

La pregunta es porque crees

La pregunta es porque crees que debe de imprimir 1000 ?

El operador módulo devuelve el número que sobra de dividir un número entre otro. Cuando divides como en este caso un número par, nunca sobra nada, porque una división de un número par entre dos siempre da 0.

Imprimiría 1 si en algún momento dividieran entre un número non.

$ cat > Asi.java <<.
> class Asi {
>     public static void main( String ... args ) {
>        System.out.println( 8 % 2 ); // 0
>        System.out.println( 9 % 2 ); // 1
>     }
> }
> .
$ javac Asi.java
$ java Asi
0
1

Entonces no hay en realidad un error en tu programa.