import objectdraw.*; import java.awt.*; // Examples of nongraphical recursive methods involving ints and strings. public class TextRecursion extends FrameWindowController { // test the methods public void begin() { int num = 6; int numFactorial = factorial(num); System.out.println(num + "! = " + numFactorial); int fibNum = fib(num); System.out.println("Fibonacci number " + num + " = " + fibNum); String text = "I like recursion"; int textLength = length(text); System.out.println("The length of \"" + text + "\" is " + textLength); } // recursive implementation of factorial public int factorial(int n) { if (n == 0) { return 1; } return n * factorial(n - 1); } // iterative implementation of factorial public int factorialIterative(int n) { int result = 1; int i = 2; while (i <= n) { result = result * i; i++; } return result; } // recursive implementation of fibonacci numbers public int fib(int n) { if (n == 0 || n == 1) { return 1; } return fib(n - 1) + fib(n - 2); } // recursive implementation of string length public int length(String str) { if (str.equals("")) { return 0; } return 1 + length(str.substring(1)); } }