Scheinaufgabe

Status
Nicht offen für weitere Antworten.
I

ibrahim

Gast
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:
 

Ullenboom

Bekanntes Mitglied
Hallo,

ein Tipp: Rufe ein eigenes doppelDreieck2() mit 0 auf und lasse die Abbruchbedingung nicht bei n > 0 enden, sondern bei n > 4 oder so. Der rekursive Aufruf ist dann doppelDreieck2(n+1);

Grüße

Christian
 

kleiner_held

Top Contributor
@Christian
deinen Tip hab ich nicht verstanden, meiner Meinung nach muss er nur in der Methode doppelDreieck zwischen den Zeilen 15 und 16 einen Aufruf einfuegen.

mein Tip:
1. wenn du in der Methode doppelDreieck erst eine linie(n); malst und dann den rekursiven Aufruf doppelDreieck(n-1); ausfuehrst, kommt wie du festgestellt hast das raus:
Code:
*****
****
***
**
*

2. wenn du in doppelDreieck erst den rekursiven Aufruf doppelDreieck(n-1); ausfuehren wuerdest und dann eine linie(n); malst (also Zeile 14 und 15 in deinem Code vertauschst), kommt das raus:
Code:
*
**
***
****
*****

So - jetzt ist es eigentlich nicht sonderlich schwer beide Teile zu kombinieren :-D
 

tfa

Top Contributor
kleiner_held hat gesagt.:
@Christian
deinen Tip hab ich nicht verstanden, meiner Meinung nach muss er nur in der Methode doppelDreieck zwischen den Zeilen 15 und 16 einen Aufruf einfuegen.

Genau. Die Zauberworte sind Pre-Order und Post-Order. Wenn man beides gleichzeitig macht, bekommt man zwei Dreiecke wie gewünscht.
tfa
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben