// FactorialRecursionDemo.java
public class FactorialRecursionDemo
{
public static long factorial(int n)
{
System.out.println("factorial begin: n=" + n);
long toReturn;
if ( n > 1 )
toReturn = factorial(n-1) * n;
else if ( n == 0 || n == 1 )
toReturn = 1;
else
throw new IllegalArgumentException("n=" + n + " must be > 0.");
System.out.println("factorial end: n=" + n + ", toReturn=" + toReturn);
return toReturn;
} // method factorial
public static void main(String[] args)
{
int n = 8;
System.out.println("The factorial of " + n + " is "
+ factorial(n) + ".");
} // method main
} // class FactorialRecursionDemo