Die Aufgabe
Aufgabe 5
Der Binomialkoeffizient (sprich: „n über k“) ist eine mathematische Funktion, die verwendet wird, um die Anzahl der Möglichkeiten zu bestimmen, k Objekte aus n Objekten auszuwählen. Er kann durch die rekursive Formel
berechnet werden. Dabei muss k ≥ 0 und n ≥ k sein.
a) Berechnen Sie nachvollziehbar .
b) Schreiben Sie die rekursive Methode bin zur Berechnung des Binomialkoeffizienten in Java so, dass sie aus der Main-Methode mittels
long b = bin(n, k);aufgerufen werden kann!
c) Gegeben ist die noch unvollständige Klasse BinKoeff (siehe Lösungsblatt Seite 14), welche die beiden Zahlen n und k von der Tastatur liest, die gelesenen Zahlen auf Zulässigkeit prüft und – falls sie zulässig sind – die Methode bin aufruft. Die Ausgabe des Binomialkoeffizienten soll in der folgenden Form auf dem Bildschirm erscheinen:
(n über k) = Ergebnis
Darin sind „n“ und „k“ die eingegebenen Zahlenwerte und „Ergebnis“ der berechnete Binomialkoeffizient. Ergänzen Sie die fehlenden Codezeilen auf dem Lösungsblatt (Seite 14).
Hinweise: Die Klassen In und Out aus der Vorlesung/Übung werden als verfügbar vorausgesetzt.
Unser Gerüst für die Klasse BinKoeff (Lösungsblatt Seite 14 liegt nicht vor):
class BinKoeff { // Methode bin aus b) public static void main (String[ ] args) { // n und k von der Tastatur lesen // n und k prüfen; falls zulässig: bin aufrufen und // das Ergebnis in der Form (n über k) = Ergebnis ausgeben }}Gegeben ist eine Formel, die auf sich selbst zurückgreift: Um (n über k) zu bekommen, braucht man zwei Binomialkoeffizienten mit kleinerem n. Eine solche Formel heißt rekursiv. Nur in zwei Fällen steht der Wert direkt da: wenn k = 0 oder k = n ist.
a) verlangt die Rechnung von Hand für n = 4 und k = 2. „Nachvollziehbar“ heißt: Jede Anwendung der Formel steht auf dem Papier, nicht nur das Ergebnis. b) verlangt eine Java-Methode, die genau zum Aufruf long b = bin(n, k); passt. c) verlangt die fehlenden Zeilen einer Klasse BinKoeff: einlesen, prüfen, aufrufen, ausgeben.
Klausur: Ohne Rechner und ohne Computer, alles von Hand. Punkte nennt die Beispielklausur für diese Aufgabe nicht. Es kommt an auf: die Zwischenschritte in a), den passenden Methodenkopf in b) und in c) die Prüfung von n und k sowie die Ausgabe genau in der verlangten Form.
Annahme: Die unvollständige Klasse BinKoeff („Lösungsblatt Seite 14“) liegt uns nicht vor. Wir legen deshalb selbst ein Gerüst fest (unten). Stehen auf dem echten Lösungsblatt schon einige Zeilen, fallen die entsprechenden Schritte weg.
- a) Die Formel lesen.
- a) (4 über 2) in zwei Teile zerlegen.
- a) Den linken Teil (3 über 1) ausrechnen.
- a) Den rechten Teil (3 über 2) ausrechnen.
- a) Beide Teile zusammensetzen.
- b) Der Kopf der Methode bin.
- b) Der Basisfall.
- b) Der Rekursionsfall.
- b) Der Ablauf für bin(4, 2).
- c) Das Gerüst der Klasse BinKoeff.
- c) n und k einlesen.
- c) n und k prüfen.
- c) bin aufrufen.
- c) Das Ergebnis ausgeben.
- c) Unzulässige Eingabe melden.
- c) Das fertige Programm testen.