public class Rekursion extends MiniJava { /* ANGABE: */ public static void main(String[] args) { int n = 0; // n = 10; while (n < 1 || n > 10) { n = readInt("Bitte n (1 <= n <= 10) eingeben:"); } System.out.println("\nAusgabeMitSchleife:"); AusgabeMitSchleife(n); System.out.println("\nAusgabeMitRekursion:"); AusgabeMitRekursion(n); System.out.println("\nAusgabeTiefe:"); AusgabeTiefe(n); System.out.println("\nAusgabeTiefeRekursiv:"); AusgabeTiefeRekursiv(n); } public static void AusgabeMitSchleife(int n) { for (int i = 1; i <= n; i++) { System.out.print(i + ", "); } System.out.println("\nFertig"); } // Gibt die Zahl mit Einrueckung aus. public static void EingerueckteAusgabe(int n) { for (int j = 1; j <= n; j++) { System.out.print(" "); } System.out.println(n + ""); } // Simuliert die mittels Rekursion zu erreichende Ausgabe. public static void AusgabeTiefe(int n) { // Hin for (int i = 1; i <= n; i++) { EingerueckteAusgabe(i); } System.out.println(); // Zurueck for (int i = n; i >= 1; i--) { EingerueckteAusgabe(i); } System.out.println(); } /* REKURSIVE LĂ–SUNG: */ public static void AusgabeMitRekursion_Idee(int n) { if (n <= 0) return; AusgabeMitRekursion_Idee(n-1); writeConsole(n + ", "); // -> Problem: "Fertig" fehlt. // -> Verwende diese Funktion nur als Hilfsfunktion } public static void AusgabeMitRekursion(int n) { AusgabeMitRekursion_Idee(n); writeLineConsole("\nFertig"); } public static void AusgabeTiefeRekursiv(int n) { // Hilfsfunktion mit richtigen Parametern aufrufen: AusgabeTiefeRekursivHelper(1, n); } public static void AusgabeTiefeRekursivHelper(int zaehler, int n) { // Abbruchbedingung: if (zaehler > n) { System.out.println(); return; } // Rekursionsvorschrift: EingerueckteAusgabe(zaehler); AusgabeTiefeRekursivHelper(zaehler+1, n); EingerueckteAusgabe(zaehler); } }