Complete Program

Classic programmed-learning exercises, refreshed for modern Java and presented in the current MrStyner.com portfolio style.

Modern Java noteThis archive has been refreshed for Java 25 LTS. Core language concepts remain useful, while outdated setup instructions and browser-era Java are labeled or replaced. Java 26 is the current feature release; Java 25 is used here as the stable teaching baseline.

Answer:

Yes.

Complete Program

When fib(n) is computed recursively, very many activations are created and destroyed. Sometimes the time it takes to compute fib(n) is used as a benchmark, a program that tests the speed of a computer. Here is a bare-minimum program for fib(n):

class FibonacciCalc
{
  public int fib( int n )
  {
    if ( n == 1 ) 
      return 1;
    else if ( n == 2 ) 
      return 1;
    else
      return fib( n-1 ) + fib( n-2 );
  }
}

class FibonacciTester
{
  public static void main ( String[] args)
  {
    int argument = Integer.parseInt( args[0] );  // Get N from the command line.
    
    FibonacciCalc f = new FibonacciCalc();
    int result = f.fib( argument );
    System.out.println("fib(" + argument + ") is " + result );
  }
}

Run the program with an argument on the command line, like java FibonacciTester 20 Here are some results of running the program on my IBM ThinkPad 380ED. You might wish to run the program on your computer and compare speeds.

N102030354045
fib(N)55676583204092274651023341551134903170
time (sec) 223430360

It takes a few seconds for the Java system to load and start running. This time is included in these measurements.

QUESTION 20:

Is an iterative version of Fibonacci possible?