SS 2001 | Hannes Federrath |
Übung 2 | Lars Knipping |
Abgabe bis zum 17.05.01. |
Gegeben seien folgende Java-Deklarationen:
int i;
char c;
float f;
byte b;
boolean bool;
short s;
double d;
long l;
Sind folgende Zuweisungen in Java zulässig und wenn ja, was bewirken sie? Begründe die Antwort.
Können Java-Zuweisungen primitiver Datentypen, die explizite Typumwandlungen beinhalten und ohne Beanstandungen übersetzt werden, Laufzeitfehler (Exceptions) verursachen? Begründe die Antwort.
Wenn man x8 berechnen will, ist es geschickter,
x *= x;
x *= x;
x *= x;
zu programmieren und somit mit drei Multiplikationen auszukommen als etwa mit
p = 1;
for (int i=0; i<8; ++i) {
p *= x;
}
acht Multiplikationen zu benötigen. Diese Beobachtung führt zu einem Algorithmus für die schnelle Exponentiation (im englischen heißt der Algorithmus square-multiply), der p=xn für x>0 und natürliche n berechnet:
Setze p auf 1.
Solange n ungleich 0 ist:
Falls n ungerade ist, multipliziere p mit x.
Halbiere n. (Der Rest wird ignoriert.)
Quadriere x.
Implementiere den Algorithmus als Java-Programm, das mit x und n parametrisiert ist. Der Zugriff auf die Argumente soll dabei über die Kommandozeilenparameter wie in Aufgabe 1.2 erfolgen. Teste Dein Programm.
Die Fibonacci-Zahlen sind eine Folge natürlicher Zahlen, bei der jede Zahl die Summe der beiden vorangegangenen ist. Die Folge beginnt mit 1, 1, 2, 3, 5, 8, 13 und setzt sich so weiter fort.