public final class PrintInt
{
    private static final String DIGIT_TABLE = "0123456789abcdef";
    private static final int    MAX_BASE    = DIGIT_TABLE.length( );

    // Print n in any base, recursively
	// Precondition: n >= 0, 2 <= base <= MAX_BASE
    private static void printIntRec( long n, int base )
    {
        if( n >= base )
            printIntRec( n / base, base );
        System.out.print( DIGIT_TABLE.charAt( (int) ( n % base ) ) );
    }

    // Driver routine
    public static void printInt( long n, int base )
    {
        if( base <= 1 || base > MAX_BASE )
            System.err.println( "Cannot print in base " + base );
        else
        {
            if( n < 0 )
            {
                n = -n;
                System.out.print( "-" );
            }
            printIntRec( n, base );
        }
    }

        // Simple test program
    public static void main( String [ ] args )
    {
        for( int i = 0; i <= 17; i++ )
        {
            printInt( 1000, i );
            System.out.println( );
        }
        printInt( 0x5DEECE66DL, 10 );
        System.out.println( );
    }
}