// Java implementation of some scheme programs from CSI // Written by the MCS-178 gang // March 20, 2006 class AnythingButHelloWorld { public static void main(String[] args) { System.out.println("\nTesting factorial()"); for (int i = 0; i < 10; i++) { System.out.println(i + "! = " + factorial(i)); } System.out.print("\nThe sum from 1 to 10 is "); System.out.println(sumFromTo(1, 10)); System.out.print("\nThe number of digits in -380000000 is "); System.out.println(numberOfDigits(-380000000)); System.out.println("\nTesting factorialIteratively()"); for (int i = 0; i < 10; i++) { System.out.println(i + "! = " + factorialIteratively(i)); } System.out.print("\nIs 6 perfect? "); System.out.println(isPerfect(6)); System.out.print("Is 7 perfect? "); System.out.println(isPerfect(7)); System.out.println(); } public static int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n-1); } } public static int sumFromTo(int lower, int upper) { int sum = 0; for (int i = lower; i <= upper; i++) { sum += i; } return sum; } public static int numberOfDigits(int number) { if (number < 0) { return numberOfDigits(0 - number); } else if (number < 10) { return 1; } else { return (1 + numberOfDigits(number / 10)); } } public static int factorialIteratively(int n) { int value = 1; int i = 1; while (i <= n) { value *= i; i++; } return value; } public static boolean isPerfect(int n) { /* if (sumOfDivisors(n) == (2 * n)) return true; else return false; */ return (sumOfDivisors(n) == (2 * n)); } public static int sumOfDivisors(int n) { int value = 0; int i = n; while (i >= 1) { if ((n % i) == 0) value += i; i--; } return value; } }