Fibonacci

Werbung
© 2004 Pohlig
Leonardo Pisano,
genannt Fibonacci
geb. vermutlich 1170 –
gest. vermutlich 1250
Ort: Pisa
Thema: Fibonacci-Zahlen
Informatik Kurse 11-13
1
© 2004 Pohlig
Übung 1
Notieren Sie die
Seitenlängen der
Quadrate, wenn das
erste Quadrat eine
Seitenlänge 1 hat.
Setzen Sie die Folge
fort.
Erkennen Sie ein
Bildungsgesetz?
Informatik Kurse 11-13
2
© 2004 Pohlig
Lösung
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ...
fib(n) = fib(n-1) + fib(n-2)
2-fach-Rekursion
mit
Basisfall
fib(1) = fib(2) = 1
Informatik Kurse 11-13
3
© 2004 Pohlig
Übung 2
Siehe Aufgabenblatt
Lösung
Informatik Kurse 11-13
4
© 2004 Pohlig
Übung 3: Fibonacci-Demo-Programm
Lösung:
rekursive Methode
import info1.*;
public class FibonacciDemo{
public static void main(String[] args){
System.out.print("Geben Sie ein Zahl an: ");
int a = Console.in.readInt();
System.out.println("fib("+a+") = " + fibonacci(a));
}
private static int fibonacci(int a){
if (a==1||a==2) return 1;
else return fibonacci(a-1)+fibonacci(a-2);
}
}
Informatik Kurse 11-13
5
© 2004 Pohlig
Übung 4
Bauen Sie in das Demoprogramm eine Uhr ein, um den
zeitlichen Aufwand bei der Berechnung von FibonacciZahlen zu messen
Lösung:
import info1.*;
public class FibonacciDemoUhr{
public static void main(String[] args){
StoppUhr uhr = new StoppUhr();
System.out.print("Geben Sie ein Zahl an: ");
int a = Console.in.readInt();
uhr.starten();
int fib = fibonacci(a);
uhr.stoppen();
System.out.println("fib("+a+") = " + fib);
System.out.println("Rechendauer: "+ uhr);
}
private static int fibonacci(int a){
if (a==1||a==2) return 1;
else return fibonacci(a-1)+fibonacci(a-2);
}
Informatik Kurse 11-13
6
© 2004 Pohlig
Übung 5
Finden Sie eine grafische Darstellung, aus der man ablesen kann,
was in welcher Reihenfolge berechnet wird, wenn man mit unserem
Programm Fibonacci-Zahlen bestimmen lässt.
Mögliche Lösung:
Informatik Kurse 11-13
7
© 2004 Pohlig
Übung 6
Finden Sie eine nicht rekursive Methode zur Berechnung der Fibonacci-Zahlen
import info1.*;
Typ long, um größere
Zahlen berechnen zu
können
public class FibonacciDemo2 {
//gültig bis n= 92
public static void main (String[] args) {
System.out.print("a: ");
int a = Console.in.readInt();
System.out.println("fib("+a+") = "+fibonacci(a));
}
private static long fibonacci(int a){
long fib = 1;
for (long fib1 = 1, fib2 = 1, i=3; i <= a; i++){
fib = fib1 + fib2;
fib1 = fib2;
fib2 = fib;
}
Es können mehrere
return fib;
lokale Variable
}
definiert werden
}
Informatik Kurse 11-13
8
Herunterladen