// ------------------
// ReverseDigits.java
// ------------------

final class ReverseDigits {
    /**
     * O(n) in space
     * O(n) in time
     */
    private static long eval (long n, long m) {
        if (n == 0)
            return m;
        return eval(n / 10, (10 * m) + (n % 10));}

    /**
     * O(n) in space
     * O(n) in time
     */
    public static long eval (long n) {
        return eval(n, 0);}}

final class ReverseDigitsTest {
    public static void main (String[] args) {
        System.out.println("ReverseDigits.java");

        assert ReverseDigits.eval(   0) ==    0;
        assert ReverseDigits.eval(   1) ==    1;
        assert ReverseDigits.eval(   9) ==    9;
        assert ReverseDigits.eval(  10) ==    1;
        assert ReverseDigits.eval(  12) ==   21;
        assert ReverseDigits.eval(  99) ==   99;
        assert ReverseDigits.eval( 100) ==    1;
        assert ReverseDigits.eval( 102) ==  201;
        assert ReverseDigits.eval( 195) ==  591;
        assert ReverseDigits.eval( 999) ==  999;
        assert ReverseDigits.eval(-195) == -591;

        System.out.println("Done.");}}


syntax highlighted by Code2HTML, v. 0.9.1