Eine gute Antwort wäre:

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] );

    FibonacciCalc f = new FibonacciCalc();
    int result = f.fib( argument );
    System.out.println("fib(" + argument + ") is " + result );
  }
}

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.

FRAGE 19:

Is an iterative version of Fibonacci possible?

Inhaltsverzeichnis