// ----------------
// 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