Rekursion – Einen String rückwärts ausgeben

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

Beispiele für Methoden der Klasse String

Hier nur ein wirklich sehr leichtes Beispiel für die Methoden, die uns die Klasse String zur Verfügung stellt.

Bei Gelegenheit werde ich dazu noch ein ausführlicheres Beispiel präsentieren.

import java.io.*;
public class Zeichenketten {

	static BufferedReader br = new BufferedReader(
			new InputStreamReader(System.in));

	public static void main(String[] args)
	throws IOException
	{
		String vorname, name;

		System.out.println("Bitte geben Sie Ihren Vornamen ein: ");
		vorname = br.readLine();
		System.out.println("Bitte geben Sie Ihren Nachnamen ein: ");
		name 	= br.readLine();

		System.out.println("--------------------------------------------------------------");
		System.out.println("Einige Beispiele, was man mit Zeichenketten/Strings machen kann:");
		System.out.println("--------------------------------------------------------------");

		System.out.println("vollständige Ausgabe: " + vorname + " " + name);
		System.out.println("V. Name: " + vorname.charAt(0) +". " + name);
		System.out.println("Vorname N.: " + vorname +". " + name.charAt(0));
		System.out.println("V. N.: " + vorname.charAt(0) +". " + name.charAt(0) + ".");
		System.out.println("erster Buchstabe Vorname fehlt:" + vorname.substring(1));
		System.out.println("erster Buchstabe Nachname fehlt:" + name.substring(1));

	}

}

Viel Spaß beim Modifizieren und Ausprobieren!