Java Sternchen ausgeben mittels Rekursion

buffy2299s

Mitglied
Hallo Leute,
ich habe bei folgender Aufgabe das Problem, dass ich es mittels einer Schleife super lösen könnte aber mit der Rekursiv hab ich einfach kein Schimmer.

Implementieren Sie nun eine ähnliche Ausgabe (siehe unten) mit Hilfe von Rekursion und Methoden. Verwenden Sie keine Schleifen!
Implementieren Sie ein Java Programm, welches folgende Sternchenstruktur auf der Kommando- zeile ausgibt. Das Programm soll einen int vom Benutzer einlesen, welcher die maximale Länge der Sternchen angibt (im folgenden Beispiel 4) und damit auch die Anzahl der Zeilen bestimmt.

****
***
**
*
**
***
Code:
import java.util.Scanner;

public class Rekursion {

    public static void main (String [] args){
       
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        rekursiv(a);
        scan.close();
    }
   
    public static void rekursiv(int b){
       
        }
    }
****
 
Wenn du schon eine funktionierende iterative Lösung mit Schleifen hast, kannst du sie doch wahrscheinlich ganz gut schrittweise in eine rekursive Lösung überführen, anstatt bei Null anzufangen.
Vermutlich hast du jetzt zwei Schleifen. Eine innere Schleife, die eine variable Anzahl von Sternen nebeneinander ausgibt und eine äußere Schleife, die die Zeilen ausgibt.
Sofern du es noch nicht hast, kannst du die innere Schleife in eine eigene Methode auslagern. Im zweiten Schritt baust du die Methode so um, dass sie rekursiv arbeitet. Im dritten Schritt stellst du dann die äußere Schleife auf Rekursion um.
 
Ja und hier ist das Problem, ich habe zwar einen kleinen Ansatz wie ich es umsetzen könnte, kann es jedoch nicht umsetzen.
Hier mein Ansatz:
Code:
import java.util.*;

public class Sternchen {
   
    public static void main(String [] args){
        Scanner scan = new Scanner (System.in);
        System.out.print("Bitte geben Sie die Anzahl der Sternchen ein: ");
        int n = scan.nextInt();
        scan.close();
        System.out.println(rekursiv(n));
    }
   
    static int rekursiv (int n ){
   
        if (n==1)
            return 1;
        else
            return rekursiv(n-1);
   
    }
       
   
}
 
Na ja, das ist jetzt eine aufwändige Methode, die Zahl 1 als Ergebnis zu ermitteln, wobei n die Größe des gewünschten Aufwands festlegt.😉 Mit meinem Vorschlag hat das nicht viel zu tun. Wenn du nicht deine iterative Lösung auf Rekursion umstellen möchtest, sondern lieber bei Null beginnst, kannst du es ja trotzdem schrittweise tun, indem du dir beispielsweise zunächst eine Methode programmierst, die n Sterne ausgibt. Die Methode kannst du dann als ersten Baustein für die Gesamtlösung verwenden.
 

Zurück
Oben