Raute mit Rekursion "zeichnen"

IPodFan

Mitglied
Hallo Leute,
ich sitze grade eine Weile an einer Aufgabe, die ich absolut nicht rauskriege.
Ich soll eine Raute, also sowas:

#
###
#####
###
#

(Edit: Die Raute wird leider nicht richtig angezeigt. Die '#' sollen zentriert sein.)

mit der Höhe n (ein von mir eingelesener Wert) rekursiv und vollkommen ohne Schleifen 'zeichnen'.
Habt ihr da Denkanstöße oder Vorschläge für mich, wie ich das realisieren kann?

MfG
IPodFan
 
Hallo.

Du rufst deine Methode so oft auf bis eine Bedingung zutrifft.
z.B bis ein index von 5 erreicht wurde.

Sowas wie:

Java:
meineMethode(0, ......) ;

private void meineMethode(counter, ...){
      Wenn counter < 5 dann meineMethode(counter+1, .....)
}

Und in der Methode zeichnest du dann jede "Line". Nur du solltest auch der Methode was mitgeben, damit er weiß wieviel Rauten er zu zeichnen hat.

Grüße
 
Zuletzt bearbeitet:
Ehrlich gesagt kriege ich es immernoch nicht gebacken 😛
Kriege es zwar realisiert, dass jede Zeile einzeln bearbeitet wird,
nur scheitere ich daran, in den Zeilen die richtige Anzahl an Rauten
an den richtigen Stellen auszugeben.
Müsste eigentlich doch nicht so schwer sein, oder?!

MfG
IPodFan
 
Code:
public static void drawRaute(int height, int counter) {
     
       // counter := Zeile
       height = height-1;
     
       if (counter > height) {
           return;
       }
     
       if (counter < height/2) {
           drawLine(height+1,counter,1);
       }
       if (counter == height/2) {
           drawLine(height+1,counter,1);
       }
       if (counter > height/2) {
           drawLine(height+1,counter,1);
       }
     
       drawRaute(height+1, counter+1);
     
     
   }
 
  
   
   public static void drawLine(int height,int line, int number) {
       
       // Anzahl Rauten in der Linie
       int amount = 1 + ((line-1)*2);
       
       if (number > height) {
           System.out.println();
           return;
       }
       
       if (number > ((height-amount)/2) && number < height-((height-amount)/2) ) {
           System.out.print("#");
           drawLine(height,line,number+1);
       } else {
           System.out.print(".");
           drawLine(height,line,number+1);
       }       
   }

Edit: eine if Klammer geändert

Die Funktion drawLine ist was nicht wirklich funktioniert.
 
Zuletzt bearbeitet:
Du benötigst 2 rekursive Methoden. Eine für die Zeilen, die andere für die Spalten.
Du versuchst grad alles in einer zu packen, was zwar möglich ist, aber der Schwierigkeitsgrad steigt hierdurch quadratisch an.
 

Zurück
Oben