SS 2001 | Hannes Federrath |
Übung 1 | Lars Knipping |
Abgabe bis zum 10.05.01. |
Gegeben seien folgende Java-Deklarationen:
Welche der folgenden Java-Ausdrücke ist unter den o.g. Deklarationen korrekt? Wenn der Ausdruck nicht korrekt ist, was ist der Fehler und gibt es eine Typdeklaration, mit der er korrekt ist?
Folgendes Java-Programm berechnet die
Fakultät einer ganzen Zahl:
/** Berechnet fuer n>=0 die Fakultaet n! von n */
public class Factorial {
public static int getFactorialOf(int n) {
int fact = 1;
for (int i=1; i<=n; ++i) { // Schleife
fact *= i; // Abkuerzung fuer: fact = fact * i;
}
return fact;
}
public static void main(String[] argv) {
if (argv.length == 1) { // Pruefe ob die Kommandozeile genau ein Argument hat
int n = Integer.parseInt(argv[0]); // Kommandozeilenargument einlesen
int result = getFactorialOf(n); // Fakultaet berechnen
System.out.println(result); // Ergebnis ausgeben
} else {
System.out.println("usage> java Factorial <n>");
}
}
}
Ändere die Methode getFactorialOf(int n) derart, daß die Fakultät rekursiv berechnet wird. Hinweis: Man spricht von Rekursion wenn sich eine Methode selbst aufruft. Der rekursive Algorithmus zur Berechnung der Fakultät beruht darauf, daß n! gleich n*(n-1)! ist.