Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.24 KB | None | 0 0
  1. import com.sun.org.apache.xpath.internal.SourceTree;
  2.  
  3. public class RecursionZIKO {
  4.  
  5.     /*
  6.     Aufgabe:
  7.         Rekursive Methoden.
  8.         Ergänzen Sie fehlende Teile der Klasse entsprechend den Kommentaren
  9.         an den mit TODO gekennzeichneten Stellen.
  10.         Sie dürfen dabei KEINE SCHLEIFEN und KEINE GLOBALEN VARIABLEN
  11.         (Variablen, die außerhalb eines Methodenrumpfs deklariert werden) verwenden!
  12.         Methoden dürfen sich gegenseitig aufrufen.
  13.         Definieren Sie aber keine zusätzlichen Hilfsmethoden.
  14.  
  15.     Punkte (maximal 27):
  16.         9 Punkte für die Implementierung von 'replicate',
  17.         9 Punkte für die Implementierung von 'diagonal',
  18.         9 Punkte für die Implementierung von 'printList'.
  19.         Bewertung: für jede Methode jeweils ALLES ODER NICHTS!
  20.         nur vollständig korrekt implementierte Methoden erhalten Punkte.
  21.     */
  22.  
  23.     // Gibt das gegebene Zeichen c genau n-mal in einem String zurück.
  24.     // Wenn n gleich 0 ist, wird ein Leerstring "" zurückgegeben.
  25.     // Für negative n soll das gleiche passieren wie für n gleich 0.
  26.     // Beispiel: replicate('a',5) gibt folgenden String zurück: "aaaaa"
  27.     public static String replicate(char c, int n) {
  28.  
  29.         String s = "" ;
  30.         if (n<=0){
  31.             return s ;
  32.         }
  33.         return c + replicate(c,n-1) ;
  34.     }
  35.  
  36.     // Gibt alle Zahlen absteigend von m bis n zeilenweise mit jeweils um 1 kleiner
  37.     // werdenen Anzahl von führenden '_' aus (bis zur letzten Zeile mit gar keinem '_').
  38.     // Ist n > m wird nichts ausgegeben.
  39.     // Beispiel: diagonal(4, 9) gibt folgendes aus:
  40.     // _____9
  41.     // ____8
  42.     // ___7
  43.     // __6
  44.     // _5
  45.     // 4
  46.     //
  47.     // Hinweis: Hier darf 'replicate' benutzt werden.
  48.     public static void diagonal(int n, int m) {
  49.  
  50.         if (n>m) {
  51.             return ;
  52.         }
  53.  
  54.         System.out.println(replicate('_',m-n) + m);
  55.         diagonal(n,m-1);
  56.  
  57.  
  58.         // TODO: implementieren Sie diese Funktion mittels Rekursion
  59.  
  60.     }
  61.  
  62.     // Gegeben ist ein Array an Listeneinträgen die formatiert ausgegeben
  63.     // werden sollen. Beispiel:
  64.     //
  65.     //     String[] items = {"Menü:", "Vorspeise:", "Leberknödelsuppe",
  66.     //                       "Frittatensuppe", ".", "Hauptspeise:", "Schnitzel"};
  67.     //     printList(items, 0, 0);
  68.     //
  69.     // liefert folgende Ausgabe:
  70.     //
  71.     // Menü:
  72.     // __Vorspeise:
  73.     // ____Leberknödelsuppe
  74.     // ____Frittatensuppe
  75.     // __Hauptspeise:
  76.     // ____Schnitzel
  77.     //
  78.     // Insbesondere gilt:
  79.     //
  80.     //   - Jeder String im gegebenen Array wird in einer eigenen Zeile
  81.     //     ausgegeben, beginnend mit Element i, wobei jede Zeile mit n
  82.     //     mal dem Zeichen '_' beginnt.
  83.     //
  84.     //   - Wenn ein String mit ":" endet, dann wird für jedes darauf folgende
  85.     //     Element der Einrückungsgrad um zwei mal '_' erhöht.
  86.     //
  87.     //   - Der String "." wird nicht ausgegeben, aber der Einrückungsgrad aller
  88.     //     darauf folgenden Elemente wird um zwei '_' verringert.
  89.     //
  90.     // Hinweise:
  91.     //
  92.     //   - Sie können replicate als Teil ihrer Implementierung verwenden
  93.     //     (auch wenn Sie replicate nicht implementiert haben).
  94.     //
  95.     //   - Verwenden Sie die Methoden charAt oder endsWith des String-Typs
  96.     //     um das Ende von Strings zu überprüfen,
  97.     //     und equals um die Gleichheit von Strings zu überprüfen.
  98.     //
  99.     public static void printList(String[] items, int i, int n) {
  100.  
  101.         if (i<0 || i>= items.length) {
  102.             return ;
  103.         }
  104.         if (items[i].endsWith(":")) {
  105.             printList(items,i+1,n+2);
  106.         } else if (items[i].endsWith(".")) {
  107.             printList(items,i+1,n-2);
  108.         } else {
  109.             System.out.print(replicate('_',n));
  110.             System.out.println(items[i]);
  111.             printList(items,i+1,n);
  112.  
  113.  
  114.  
  115.         }
  116.  
  117.  
  118.  
  119.     }
  120.  
  121.     // Diese Methode können Sie zum Testen nutzen. Geht nicht in die Beurteilung ein.
  122.     public static void main(String[] args) {
  123.  
  124.         System.out.println(replicate('a',5));
  125.         diagonal(4,9);
  126.  
  127.  
  128.         String[] items = {"Menü:", "Vorspeise:", "Leberknödelsuppe", "Frittatensuppe", ".", "Hauptspeise:", "Schnitzel"};
  129.         printList(items, 0, 0);
  130.  
  131.     }
  132.  
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement