Source of RecursivelyPrintFactorial.java


  1: //RecursivelyPrintFactorial.java

  3: import java.util.Scanner;

  5: public class RecursivelyPrintFactorial
  6: {
  7:     public static void printFactorial
  8:     (
  9:         int factCounter,
 10:         int factValue
 11:     )
 12:     {
 13:         int nextCounter;
 14:         int nextValue;

 16:         if (factCounter == 0) // Base case: 0! = 1
 17:         {
 18:             System.out.println("1");
 19:         }
 20:         else if (factCounter == 1) // Base case: Print 1 and result
 21:         {
 22:             System.out.println(factCounter + " = " + factValue);
 23:         }
 24:         else   // Recursive case
 25:         {
 26:             System.out.print(factCounter + " * ");
 27:             nextCounter = factCounter - 1;
 28:             nextValue = nextCounter * factValue;

 30:             /* Your solution goes here  */
 31:             printFactorial(nextCounter, nextValue);
 32:         }
 33:     }

 35:     public static void main (String [] args)
 36:     {
 37:         Scanner scnr = new Scanner(System.in);
 38:         int userVal;

 40:         userVal = scnr.nextInt();
 41:         System.out.print(userVal + "! = ");
 42:         printFactorial(userVal, userVal);
 43:     }
 44: }