¨Ubungsblatt 8

Werbung
Albert-Ludwigs-Universität Freiburg
Institut für Informatik
Einführung in die Informatik (MST)
Sommersemester 09
Prof. Dr. Wolfram Burgard
Dr. Cyrill Stachniss
Dipl. Inf. Axel Rottmann
Übungsblatt 8
Abgabe bis Mittwoch, 24.06.09, 18 Uhr
Hinweis:
Programmieraufgaben immer per Email (eine Email pro Blatt und Gruppe) an den zuständigen Tutor schicken (Java Quellcode und eventuell benötigte Datendateien). Schriftliche Lösungen bitte ebenfalls als Textdatei an den zuständigen Tutor schicken oder in
die Briefkästen in Geb. 051, Erdgeschoss einwerfen. Für den Erhalt von Bonuspunkten
müssen Sie in wenigstens 9 Übungen anwesend sein und zum Vorrechnen einer Aufgabe
diese bearbeitet und termingerecht abgegeben haben.
Aufgabe 8.1
1. Schreiben Sie eine rekursive Java Methode fakultaet, die zu einer Eingabe
n ∈ N die Fakultät (n! = 1 · 2 · . . . · n) berechnet.
2. Das Pascalsche Dreieck beschreibt Zahlen, genauer gesagt die Binominalkoeffizienten, die in Dreiecksform angeordnet werden. Die Zahlen sind im Dreieck derart
angeordnet, so dass jeder Eintrag der Summe der zwei darüberstehenden Einträge
entspricht.
Zeile 0
Zeile 1
Zeile 2
...
1
1
1
1
1
2
3
1 4
1
3
6
1
4
1
Spalte 0
Spalte 1 ...
Schreiben Sie eine rekursive Java-Methode, die ein einzelnes Element des Pascalschen Dreiecks berechnet. Das Element wird über die Zeilen und Spaltennummer
spezifiziert.
int pascal(int zeile, int spalte) {
....
}
Aufgabe 8.2
Betrachten Sie die folgende Funktion f : Z → Z (Z sind die ganzen Zahlen):

0



x
f (x, y) =
f
(x, y − 1)



f (x − 1, y)
,
,
,
,
x=y=0
x = y, x 6= 0, y 6= 0
x<y
x>y
1. Schreiben Sie eine rekursive Java-Methode, die die Funktion f implementiert.
2. Zeichnen Sie die Activation Records für den Aufruf f (3, 1) zu dem Zeitpunkt, an
dem die maximale Rekursionstiefe erreicht ist.
Aufgabe 8.3
Schreiben Sie ein Programm, das Ihnen die Ziehung der Lottozahlen simuliert. Dabei soll
man festlegen können, aus welchem Zahlenbereich x ∈ {1, 2, . . . , M } wieviele Zahlen
gezogen werden. Beachten Sie, dass jede Zahl nur einmal gezogen werden kann. Am
Ende sollen die gezogenen Zahlen in sortierter Reihenfolge ausgegeben werden.
Zur Erzeugung der Zufallszahlen können Sie die Klasse RandomNumber von der Homepage verwenden. Beachten Sie dabei, dass getRandomNumber(int max) eine
Integer-Zahl zwischen 0 und max − 1 zurückliefert (jeweils inklusive).
Aufgabe 8.4
Schreiben Sie ein Klasse, die ein Polynom P (x) beliebigen Grades n ≥ 0 repräsentiert.
P (x) = a0 + a1 x + a2 x2 + . . . + an xn
Der Grad n soll dem Konstruktor als Parameter übergeben werden. Implementieren Sie
unter anderem eine rekursive Methode root, die eine Nullstelle in einem vorgegeben
Intervall left und right mittels Intervallhalbierung berechnet. Was muss für die Intervallgrenzen gelten?
import java.util.*;
public class Polynom{
public Polynom(int n) {...}
public double root(double left, double right) {...}
...
int n;
Vector<Double> a;
}
2
Herunterladen