Rekursion


Merowinger69

Grünschnabel
Bin gerade dabei den PythagorasBaum über ein Programm zu zeichnen. So sieht der Code bis jetzt aus:

Code:
static void zeichneQuadrat(double n){
	
		Turtle.setColor(counter);
      if(counter<8){ counter++;
 	  }else{counter=0;}
 	  
      for(int i=0;i<4;i++){
         Turtle.forward(n);
         Turtle.right(90);
      }
   }
   static void zeichnePythagorasBaum(double n){
      zeichneQuadrat(n);
      if(n>1){
         Turtle.forward(n);   
         Turtle.left(30);
         zeichnePythagorasBaum(n*0.5*Math.sqrt(3));
         Turtle.right(90);
         
          counter--;
    	  if(counter<0){ counter=8;}
 		  Turtle.setColor(counter);
 		  
         Turtle.forward(n*0.5*Math.sqrt(3));
         zeichnePythagorasBaum(n/2);
         Turtle.forward(-n*0.5*Math.sqrt(3));
         Turtle.left(60);
         Turtle.forward(-n);
      }
   }

Funktioniert auch fein doch ich will versuchen die verschiedenen Rekursionstiefen mit unterschiedlichen Farben dar zu stellen. 8 verschiedene Farben sind vorhanden.
Kann mir da jemand weiterhelfen

mfg Mero
 
Zuletzt bearbeitet:

Matze

Weltenwanderer
Ok.
Du könntest beispielsweise eine Variable anlegen, die dir als Zähler dient, den du bei jedem Rekursionsdurchlauf erhöhst.

Dann kannst du eine Methode schreiben die dir für eine bestimmte übergebene Zahl, eine bestimmte Farbe (oder random) zurückgibt.

Du kannst auch vorher eine HashMap anlegen, mit Schlüßel = eine Zahl und Wert = eine Farbe.

Am einfachsten ist es jedoch, wenn du einfach immer eine Zufallsfarbe verwendest.
 

Merowinger69

Grünschnabel
Gibtes eine solche Funktion die eine RandomFarbe ausgibt oder selbst machen?

Aber ist random schon so gut den da kann es ja sein das 2 aufeinanderfolgende Rekusionen die selbe Farbe haben und somit wär das eher kontraproduktiv.

Diese Variable müsste ich auch wieder kleiner werden lassen damit die Farben passen.
 

Matze

Weltenwanderer
Also ich arbeite noch mit Java 1.3 da gibt es keine RandomColor Funktion.
Ist aber auch einfach zu schreiben:
Du erzeugst 3 Zahlen von 0 - 255. Aus diesen 3 Zahlen (rot-grün-blau) erzeugst du eine neue Farbe new Color(rot, grün, blau).
Also bei mir waren die Farben scheinbar wircklich zufällig.

Fals du es mit der Zufallsmethode machst, brauchst du gar keinen Zähler.
Ob der wieder kleiner geht? Bestimmt. Aber wozu?
 

Merowinger69

Grünschnabel
Natürlich brauch ich einen Zähler. wenn ich nur hinaufzähl dan stimmen die Farben nicht überein. sieht so aus:



sollte aber so aussehen:

 

Matze

Weltenwanderer
Ok. Bei sowas kann ich dir leider kaum helfen, da ich nicht weiß wie dass berechnet wird.
Aber schau doch mal nach, ob es da ein Kriterium gibt, nach dem du den Zähler entweder ansteigen, oder abfallen lassen kannst.
 

Matze

Weltenwanderer
Hast du schonmal mit ner Suchmaschine nach änlichen Projekte geschaut und dort mal in den Code geschaut?