Angewandte Informatik - schisch

Werbung
Programmier-Wettbewerb
Wochenaufgabe 04
Start: 24.08.2016
Ende: 07.09.2016
Thema: Rekursion
Theoretische Antworten können als Word-, PDF- oder in Form von Kommentaren in der Java-Datei
abgegeben werden.
Heutiges Thema ist der tiefere Umgang mit Methoden und Funktionen.
Speziell beschäftigen wir uns mit der Rekursion.
Als Rekursion verstehen wir eine Technik, bei der wir eine Funktion so schreiben, dass sie sich selbst
so lange aufruft, bis eine bestimmte Abbruch-Bedingung erreicht wurde.
Also zusammengefasst:
Eine Funktion heißt rekursiv, wenn sie über eine Eingabevariable verfügt, nach deren Überprüfung
die Funktion entweder mit veränderter Eingabe wieder aufgerufen wird, oder die Funktion durch die
eine Rückgabe beendet wird.
Rekursive Funktionen verwenden normalerweise keine Schleifen. Eine Funktion, die nicht-rekursiv ist
und mit Schleifen arbeitet, heißt iterativ.
Aufgabe: (rekursion.java) [10 + 30 + 10 + 20 + 30 Punkte] [100 Punkte]
a) Lege eine Funktion „fakultaet“ an, die zu einer eingegebenen natürlichen Zahl die zugehörige
Fakultät berechnet und ausgibt.
Definition: Die Fakultät einer natürlichen Zahl n ist das Produkt aller Zahlen, die kleiner gleich
n sind und wird mit n! gekennzeichnet.
Beispiel: 4! = 4 * 3 * 2 * 1 = 24
Die Funktion soll nicht rekursiv sein.
b) Lege eine Funktion „fakultaet_rekursiv“ an, die die selbe Aufgabe rekursiv löst.
Gehen wir dabei folgendermaßen vor:
- Die Funktion hat die Eingabevariable n, eine natürliche Zahl.
- Die Funktion hat eine Abfrage, ob n kleiner als 1 ist.
- Wenn n kleiner als 1 ist, so soll die Zahl 1 zurückgegeben werden. [return 1]
- Anderenfalls soll das Produkt aus n und dem Ergebnis der selbigen Funktion mit
Eingabe (n-1) zurückgegeben werden. [return n * fakultaet_rekursiv(n-1)]
Die Funktion sollte nun das selbe berechnen.
c) Nenne Vorteile für die Nutzung von rekursiven Funktionen.
d) Schreibe eine Funktion „fibonacci“, die die Fibonacci-Zahlen berechnen und ausgeben sollen.
Definition: Fibonacci-Zahlen
Die Fibonacci-Zahlen sind eine Zahlenfolge, die nach der Definition der ersten Zahlen immer
aus der Summe zweier voriger Fibonacci-Zahlen berechnet wird.
f0 := 0
f1 := 1
f2 = f0 + f1 = 0 + 1 = 1
f3 = f2 + f1 = 1 + 1 = 2
f4 = f3 + f2 = 2 + 1 = 3
f5 = f4 + f3 = 3 + 2 = 5 usw…
PW
Programmier-Wettbewerb
Die Funktion soll iterativ sein, also mit Schleifen. Dazu soll die Eingabe eine natürliche Zahl
sein, die angibt, wie viele Fibonacci-Zahlen bestimmt werden sollen.
e) Ohne Hilfe: Schreibe die Funktion „fibonacci_rekursiv“.
Tipp: return fibonacci_rekursiv(n-1) + fibonacci_rekursiv(n-2);
PW
Herunterladen