// Fig. 6.12: FactorialTest.java // Recursive factorial method // Java core packages import java.awt.*; // Java extension packages import javax.swing.*; public class FactorialTest extends JApplet { JTextArea outputArea; int callNumber; // initialize applet by creating GUI and calculating factorials public void init() { outputArea = new JTextArea(200,100); JScrollPane scroller = new JScrollPane(outputArea); scroller.setPreferredSize (new Dimension(500, 500)); Container container = getContentPane(); container.add( scroller ); // calculate the factorials of 0 through 10 for ( long counter = 7; counter <= 10; counter++ ) { callNumber = 0; outputArea.append("\n" + counter + "! = " + factorial( counter )); } } // end method init // Recursive definition of method factorial public long factorial( long number ) { callNumber++; // base case if ( number <= 1 ) { outputArea.append("\nBase Case"); return 1; } // recursive step else { outputArea.append("\n"); for (int i = 1; i < callNumber; i++) { outputArea.append("\t"); } outputArea.append("Not Base # " + callNumber + " Call Value " + number); return number * factorial( number - 1 ); }//else } // end method factorial } // end class FactorialTest