// FibonacciRecursionDemo.java

public class FibonacciRecursionDemo
{
   public static long fibonacci(int n)
   {
      System.out.println("fibonacci begin: n=" + n);
      long toReturn;
      if ( n > 1 )
         toReturn = fibonacci(n-1) + fibonacci(n-2);
      else if ( n == 0 || n == 1 )
         toReturn = n;
      else
         throw new IllegalArgumentException("n=" + n + " must be > 0.");
      System.out.println("fibonacci end:   n=" + n + ", toReturn=" + toReturn);
      return toReturn;
   }  // method fibonacci

   public static void main(String[] args)
   {
      int n = 6;
      System.out.println("The " + addSuffix(n)
                                + " Fibonacci number is "
                                + fibonacci(n) + ".");
   }  // method main

   private static String addSuffix(int n)
   {
      String numberSuffix;
      if ( n == 1 )
         numberSuffix = "st";
      else if ( n == 2 )
         numberSuffix = "nd";
      else if ( n == 3 )
         numberSuffix = "rd";
      else
         numberSuffix = "th";
      return (n + numberSuffix);
   }  // method addSuffix
}  // class FibonacciRecursionDemo