6.8.15 Lösungen
 
Aufgabe 1

 

Aufgabe 2

Download:
Fibonacci Demo3.java

import info1.*;



public class FibonacciDemo3 {

   //gültig bis n= 92

   public static void main (String[] args) {

     StoppUhr stoppUhr1 = new StoppUhr();

     long fib;

     System.out.print("n: ");

     int n = Console.in.readInt();

     stoppUhr1.starten();

     fib = fibonacci(n);

     stoppUhr1.stoppen();

     System.out.println("n! = "+fib+ "  RechenZeit: "+stoppUhr1);

   }

   private static long fibonacci(int n){

      long fib = 1;

      /*Schleife wird nur abgearbeitet, wenn n >= 3

        bis n = 92 werden die Fibonaccizahlen korrekt

        berechnet. Dann ist der Bereich von long zu klein

      */

      for (long fib1 = 1, fib2 = 1, i=3; i <= n; i++){

         fib =  fib1 + fib2;

         fib1 = fib2;

         fib2 = fib;

      }

      return fib;

   }

}

Interessant ist, dass man im Kopf der for-Schleife mehrere Variable lokal deklarieren kann, sie werden durch Kommata getrennt.

Für alle gültigen n (<=92) ist die Berechnungszeit mit 0,0 Sekunden angegeben.

 
Aufgabe 3
Download:
Fibonacci Demo4.java
import info1.*;

public class FibonacciDemo4{

  public static void main(String[] args){

    StoppUhr stoppUhr1 = new StoppUhr();

    System.out.print("n: ");

    int n = Console.in.readInt();

    stoppUhr1.starten();

    long fib = fibonacci(n);

    stoppUhr1.stoppen();

    System.out.println(n+"! = " +fib);

    System.out.println(stoppUhr1);

  }

  private static long fibonacci(int n){

    return (long)(1/Math.sqrt(5)*

                 (Math.pow((1+Math.sqrt(5))/2,n)-

                  Math.pow((1-Math.sqrt(5))/2,n)));

  }

}
Auch hier ist für alle gültigen n (<=92) die Berechnungszeit 0.0 Sekunden. Trotzdem ist leicht einzusehen, dass der Algorithmus noch effizienter ist als der in Aufgabe 2, da keine Schleife programmiert ist. Es bleibt allerdings die Frage offen, wie effizient die Math-Methoden sqrt(..) und pow(...) sind.
 
zu 6.9 Dokumentation der Klasse Mathematik
6.9.1 Wozu Dokumentationen?
zur Startseite www.pohlig.de  (C) MPohlig 2005