1  import java.util.Scanner;
  2  
  3  /**
  4     This program prints trace messages that show how often the
  5     recursive method for computing Fibonacci numbers calls itself.
  6  */ 
  7  public class RecursiveFibTracer
  8  {
  9     public static void main(String[] args)
 10     {  
 11        Scanner in = new Scanner(System.in);
 12        System.out.print("Enter n: ");
 13        int n = in.nextInt();
 14  
 15        long f = fib(n);
 16  
 17        System.out.println("fib(" + n + ") = " + f);
 18     }
 19  
 20     /**
 21        Computes a Fibonacci number.
 22        @param n an integer
 23        @return the nth Fibonacci number
 24     */
 25     public static long fib(int n)
 26     {
 27        System.out.println("Entering fib: n = " + n);
 28        long f;
 29        if (n <= 2) { f = 1; }
 30        else { f = fib(n - 1) + fib(n - 2); }
 31        System.out.println("Exiting fib: n = " + n
 32              + " return value = " + f);
 33        return f;
 34     }
 35  }