Hilfe! Das böse Wort! Rekursion
So wild ist das gar nicht, denn die Rekursion lässt sich optimal bei Problemen einsetzen, die eine gewisse Laufzeit haben, d.h. so ziemlich alles, was sich mit einer FOR-Schleife lösen lässt, kann ich auch rekursiv lösen.
Rekursiv heißt eigentlich nichts anderes, als das sich eine Methode bis zu einer gewissen Abbruchbedingung immer wieder selbst aufruft, bis eine Abbruchbedingung erreicht wird.
Als Beispiel habe ich einen String, der rückwärts ausgegeben werden soll.
public static void rkw(String s)
{
if(s.length() > 0)
{
System.out.print(s.charAt(s.length()-1));
rkw(s.substring(0, s.length()-1));
}
Die Methode rkw erwartet als Übergabeparameter einen String. Wird dieser übergeben, überprüft rkw zuerst, ob die Länge größer 0 ist, wenn ja, dann wird die letzte Stelle des Strings mit System.out.print() ausgegeben.
Anschließend rufen wir rkw erneut auf, diesmal aber mit dem veränderten String s, dieser hat nämlich nun nur noch eine Länge von 0 bis Ende-1, d.h. es wird am Ende einfach das letzte Zeichen “abgeschnitten”. Das machen wir solange, bis der String komplett umgekehrt wurde, dann ist die Abbruchbedingung erreicht und wir verlassen die Methode wieder und das kleine Programm wird beendet.
Hier folgt der gesamte Quelltext:
public class rückwärts {
public static void rkw(String s)
{
if(s.length() > 0)
{
System.out.print(s.charAt(s.length()-1));
rkw(s.substring(0, s.length()-1));
}
}
public static void main(String[] args) {
String s = "Das ist ein String!";
System.out.println(s);
rkw(s);
}
}
Ausgabe:
Das ist ein String! !gnirtS nie tsi saD
