Was ist eine Schwanzrekursion?
Die Schwanzrekursion ist eine Art Programmiermethodenaufruf, bei dem sich eine Methode selbst aufruft und dann sofort den Wert dieses zweiten Aufrufs zurückgibt. Mit anderen Worten, die Schwanzrekursion tritt auf, wenn die abschließende Anweisung innerhalb einer Methode ein weiterer Aufruf derselben Methode ist. Die Parameter im zweiten Methodenaufruf unterscheiden sich im Allgemeinen von denen des ersten, dies ist jedoch nicht erforderlich. Damit diese Rekursion funktioniert, muss die in sich aufgerufene Methode einen konkreten Wert zurückgeben, z. B. eine Zahl, eine Zeichenfolge oder ein anderes Objekt. Ungültige Methoden, die keinen Wert zurückgeben, eignen sich nicht für die Rekursion.
Die Anforderung, dass ein rekursiver Aufruf die letzte Anweisung in seiner aufrufenden Methode sein muss, bedeutet nicht unbedingt, dass der rekursive Aufruf die letzte Zeile in der Methode ist. Ein ordnungsgemäßer Aufruf der Schwanzrekursion befindet sich auch in einer Kontrollstruktur. Dies bedeutet, dass die Kontrollstruktur im Quellcode möglicherweise die Methode und nicht den Aufruf beendet. Der wichtige Unterschied in diesem Fall ist, dass eine Kontrollstruktur keine Programmieranweisung ist, sondern ein fester Bestandteil der Computersprache.
Die Schwanzrekursion gibt es in vielen Computersprachen, einschließlich Java und C ++. Häufig können diese rekursiven Aufrufe mit anderen Mitteln umgeschrieben werden, z. B. für Schleifen, while-Schleifen oder goto-Anweisungen. Der Nutzen der Rekursion ergibt sich, wenn viele aufeinanderfolgende Aufrufe derselben Methode erstellt werden. Rekursion ist oft der sauberste und einfachste Weg, um sich wiederholende Aufgaben zu erledigen.
Ein häufiges Beispiel für die Schwanzrekursion ist eine Methode, mit der die Fakultät einer Zahl berechnet wird. Dieser Vorgang ist ideal, da jede Zahl, bevor sie multipliziert wird, bei einer beliebigen Zahl beginnt. Um die Fakultät von 5 zu finden, müsste man also 5 * 4 * 3 * 2 * 1 multiplizieren. Die Rekursion ergibt sich aus der Struktur der Fakultätsmethode: Wenn die Fakultät 1 ist, wird 1 zurückgegeben, andernfalls wird die Fakultät der Zahl zurückgegeben, die der Methode minus eins gegeben wurde. Diese Methode ist auch nützlich, da sie mit einer der beiden Arten der Schwanzrekursion mit oder ohne Steueranweisung um einen abschließenden Methodenaufruf gleichwertig geschrieben werden kann.
Die Schwanzrekursion ist nur ein Beispiel für die verschiedenen Arten der Rekursion. Das Konzept bei allen Arten der Rekursion ist im Wesentlichen dasselbe, das sich eine Methode in gewisser Weise selbst nennt. Von diesen Typen unterscheidet sich die Schwanzrekursion dadurch, dass der Wert eines rekursiven Aufrufs sofort zurückgegeben wird und in der aufrufenden Methode nach diesem Aufruf nichts anderes passiert.