Scheinaufgabe

Status
Nicht offen für weitere Antworten.

ibn julaybib

Mitglied
Hallo,

ich muss eine Aufgabe programmieren und könnte Hilf gebrauchen. Wäre super nett, wenn mir jemand helfen würde.

b) Schreiben Sie eine Methode
void doppelDreieck(int n)
die rekursiv folgende geometrische Figur der Größe n über System.out ausgibt
(hier als Beispiel für n = 5):
*****
****
***
**
*
*
**
***
****
*****
Tipp: Verwenden Sie dazu die Methode linie aus Teilaufgabe a).



Code:
public class Scheinaufgabe47 extends JavaKaraProgram {

	void linie(int n){
		if(n>0){
		System.out.print("*");
		linie(n-1);
		}
	else
	System.out.println();
	}

	void doppelDreieck(int n){ 
		if(n > 0){
		linie(n);
		doppelDreieck(n-1);
		}
	}

 
public void myProgram() {
    int leange = tools.intInput("Leange: ");
	doppelDreieck(leange);
  
  }
}

Das Problem liegt bei der rekursiven Methode doppelDreieck. Ich konnte nur das obere Dreieck programmieren. Für ein doppeltes Dreieck seh ich aber nur ein iterative Lösung (zwei for-Schleifen). Ich muss aber eine rekursive Methode schreiben...ich komme hier einfach nicht weiter.

Hat jemand vielleicht einen Tipp? :bahnhof:
 

A.T.

Bekanntes Mitglied
Code:
void doppelDreieck(int n){ 
      if(n > 0){ 
        linie(n); 
        doppelDreieck(n-1); 
        line(n);
      }
}

Probier es mal so. Müsste funktionieren. Habe es aber nicht getestet!

Sobald du die Rekursion "abbrichst" wird alles was hinter dem erneuten Aufruf der Funktion noch an Code folgt der Reihe nach abgearbeitet.
 

ibn julaybib

Mitglied
Danke für die vielen Antworten doppelpost (sorry)

Es hat funktioniert. Hab den Tip von kleiner Held angewandt.

Die Lösung:

Code:
 void doppelDreieck(int n){
      if(n > 0){
      linie(n);
      doppelDreieck(n-1);
      linie(n);
      }
   }

Das ist auch die gleiche Lösung, wie sie AT (danke dür die Erläuterung dazu) gepostet hat. Danke nochmals :lol:
 
Status
Nicht offen für weitere Antworten.

Oben