// ----------------
// CountDigits.java
// ----------------

final class CountDigits {
    /**
     * O(n) in space
     * O(n) in time
     */
    public static int eval (long n) {
        if (n == 0)
            return 0;
        return 1 + eval(n / 10);}}

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

        assert CountDigits.eval(   0) == 0;
        assert CountDigits.eval(   1) == 1;
        assert CountDigits.eval(   9) == 1;
        assert CountDigits.eval(  10) == 2;
        assert CountDigits.eval(  12) == 2;
        assert CountDigits.eval(  99) == 2;
        assert CountDigits.eval( 100) == 3;
        assert CountDigits.eval( 102) == 3;
        assert CountDigits.eval( 195) == 3;
        assert CountDigits.eval( 999) == 3;
        assert CountDigits.eval(-195) == 3;

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


syntax highlighted by Code2HTML, v. 0.9.1