Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.sun.org.apache.xpath.internal.SourceTree;
- public class RecursionZIKO {
- /*
- Aufgabe:
- Rekursive Methoden.
- Ergänzen Sie fehlende Teile der Klasse entsprechend den Kommentaren
- an den mit TODO gekennzeichneten Stellen.
- Sie dürfen dabei KEINE SCHLEIFEN und KEINE GLOBALEN VARIABLEN
- (Variablen, die außerhalb eines Methodenrumpfs deklariert werden) verwenden!
- Methoden dürfen sich gegenseitig aufrufen.
- Definieren Sie aber keine zusätzlichen Hilfsmethoden.
- Punkte (maximal 27):
- 9 Punkte für die Implementierung von 'replicate',
- 9 Punkte für die Implementierung von 'diagonal',
- 9 Punkte für die Implementierung von 'printList'.
- Bewertung: für jede Methode jeweils ALLES ODER NICHTS!
- nur vollständig korrekt implementierte Methoden erhalten Punkte.
- */
- // Gibt das gegebene Zeichen c genau n-mal in einem String zurück.
- // Wenn n gleich 0 ist, wird ein Leerstring "" zurückgegeben.
- // Für negative n soll das gleiche passieren wie für n gleich 0.
- // Beispiel: replicate('a',5) gibt folgenden String zurück: "aaaaa"
- public static String replicate(char c, int n) {
- String s = "" ;
- if (n<=0){
- return s ;
- }
- return c + replicate(c,n-1) ;
- }
- // Gibt alle Zahlen absteigend von m bis n zeilenweise mit jeweils um 1 kleiner
- // werdenen Anzahl von führenden '_' aus (bis zur letzten Zeile mit gar keinem '_').
- // Ist n > m wird nichts ausgegeben.
- // Beispiel: diagonal(4, 9) gibt folgendes aus:
- // _____9
- // ____8
- // ___7
- // __6
- // _5
- // 4
- //
- // Hinweis: Hier darf 'replicate' benutzt werden.
- public static void diagonal(int n, int m) {
- if (n>m) {
- return ;
- }
- System.out.println(replicate('_',m-n) + m);
- diagonal(n,m-1);
- // TODO: implementieren Sie diese Funktion mittels Rekursion
- }
- // Gegeben ist ein Array an Listeneinträgen die formatiert ausgegeben
- // werden sollen. Beispiel:
- //
- // String[] items = {"Menü:", "Vorspeise:", "Leberknödelsuppe",
- // "Frittatensuppe", ".", "Hauptspeise:", "Schnitzel"};
- // printList(items, 0, 0);
- //
- // liefert folgende Ausgabe:
- //
- // Menü:
- // __Vorspeise:
- // ____Leberknödelsuppe
- // ____Frittatensuppe
- // __Hauptspeise:
- // ____Schnitzel
- //
- // Insbesondere gilt:
- //
- // - Jeder String im gegebenen Array wird in einer eigenen Zeile
- // ausgegeben, beginnend mit Element i, wobei jede Zeile mit n
- // mal dem Zeichen '_' beginnt.
- //
- // - Wenn ein String mit ":" endet, dann wird für jedes darauf folgende
- // Element der Einrückungsgrad um zwei mal '_' erhöht.
- //
- // - Der String "." wird nicht ausgegeben, aber der Einrückungsgrad aller
- // darauf folgenden Elemente wird um zwei '_' verringert.
- //
- // Hinweise:
- //
- // - Sie können replicate als Teil ihrer Implementierung verwenden
- // (auch wenn Sie replicate nicht implementiert haben).
- //
- // - Verwenden Sie die Methoden charAt oder endsWith des String-Typs
- // um das Ende von Strings zu überprüfen,
- // und equals um die Gleichheit von Strings zu überprüfen.
- //
- public static void printList(String[] items, int i, int n) {
- if (i<0 || i>= items.length) {
- return ;
- }
- if (items[i].endsWith(":")) {
- printList(items,i+1,n+2);
- } else if (items[i].endsWith(".")) {
- printList(items,i+1,n-2);
- } else {
- System.out.print(replicate('_',n));
- System.out.println(items[i]);
- printList(items,i+1,n);
- }
- }
- // Diese Methode können Sie zum Testen nutzen. Geht nicht in die Beurteilung ein.
- public static void main(String[] args) {
- System.out.println(replicate('a',5));
- diagonal(4,9);
- String[] items = {"Menü:", "Vorspeise:", "Leberknödelsuppe", "Frittatensuppe", ".", "Hauptspeise:", "Schnitzel"};
- printList(items, 0, 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement