Recursion 4/4/01
/**
* Write a description of class RecursionExamples here.
*
* @author (your name)
* @version (a version number or a date)
*/
import java.util.Date;
public class RecursionExamples
{
static int counter = 0;
public static void main(String [] args) {
// testTime();
//doFact();
doStringReverse();
}
public static void doStringReverse() {
String str = "some string";
printBackwards(str);
}
public static void printBackwards(String s) {
counter++;
System.out.println(" " + s + " " + counter);
if (s.equals("")) {
counter--;
System.out.println(counter);
return;
}
else {
System.out.print( s.charAt(s.length() - 1) );
printBackwards( s.substring(0, s.length() - 1) );
}
counter--;
System.out.println(counter);
return;
}
public static int fact1(int n) {
System.out.print( " " + n );
if (n == 0) {
return 1;
}
else {
int result = n * fact1(n - 1);
System.out.print( " " + result );
return result;
}
}
public static void doFact() {
int answer;
Timer t = new Timer();
t.start();
answer = fact1(25);
System.out.println();
answer = fact1(25);
System.out.println();
answer = fact1(25);
System.out.println();
t.stop();
System.out.println("Fact1(25): " + fact1(10));
System.out.println("Elapsed time: " + t.getElapsedTime());
}
public static void testTime() {
Timer t = new Timer();
try {
Thread.sleep(0);
}
catch(InterruptedException e) {
}
t.start();
long sum = 0;
for(int i = 1; i < 10000; i++) {
sum += i;
}
t.stop();
System.out.println("Elapsed time: " + t.getElapsedTime() +
" milliseconds");
System.out.println("Sum = " + sum);
}
}