Skip to main content

Rekursive Berechnungen

Wenn wir Rekursion verwenden um Anweisungsblöcke wiederholt auszuführen, nutzen wir void-Methoden. Das bedeutet, dass wir nicht daran interessiert sind, was das Ergebnis der Berechnung der Methode ist. Wir sind nur in die Anweisungen interessiert.

Wenn wir statt void-Methoden, Methoden einsetzten, die einen Wert zurückgeben, können wir Rekursion auch einsetzen um Werte zu berechnen. Diese Anwendung von Rekursion ist immer dann besonders nützlich, wenn die Berechnung zusammengesetzt ist und als Teillösung die Berechnung des selben Problems mit anderen Werten verlangt. Ein klassisches Beispiel dafür ist die Fakultätsfunktion, die wie folgt rekursiv definiert ist:

n!=n(n1)!0!=1\begin{array}{ll} &n! = n \cdot (n-1)! \\ &0! = 1 \end{array}

Sie können leicht überprüfen, dass dies der Berechnung

n!=n(n1)(n2)1n! = n \cdot (n - 1) \cdot (n - 2) \cdot \ldots \cdot 1

entspricht.

Im folgenden Video werden wir sehen, wie wir diese Funktion in Java implementieren können, indem wir direkt die rekursive Definition nutzen.

Experimente

  • Fügen Sie print-Anweisungen zum Programm hinzu, welche den Wert von n ausgeben und Ihnen auch zeigen, in welchem Zweig Sie gerade sind.
  • Was passiert bei negativen Zahlen? Experimentieren Sie.
  • Können Sie die Fakultätsfunktion auf iterativ (d.h. mithilfe eines While-loops) schreiben?

Haben Sie Fragen oder Bemerkungen? Schreiben Sie diese doch ins Forum.