Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » richtige Rekursion? » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 5 Beiträge
eulerscheZahl

Bei dem, was du uns verrätst, ist das schwer zu sagen.
Du verwendest z.B: die Funktion tunnel_rekursion, gibst dafür aber keinen Code an.
Auch ein beispielhafter Funktionsaufruf mit geeigneten Argumenten wäre hilfreich.
Wenn der Code compilierfähig ist, steigt die Chance auf Hilfe smile
Haevelin

Vielleicht hängen die Schwierigkeiten damit zusammen, dass auf ArrayList nur eine Referenz stattfindet, und nicht die values, sondern die Referenz übergeben wird?
Haevelin

Die Rekursion endet irgendwann. Aber die Werte, die erzeugt werden sind nicht das was ich programmiert habe. Also gehe ich davon aus, dass die Rekursion falsch läuft. Es werden ausgehend von einem Tunnelelement der Länge 10 cm immer wieder Elemente angefügt die Bogen im Uhrzeigersinn, Länge 5 cm, Bogen gegen den Uhrzeigersinn, Länge 5 cm und Tunnelstück, Länge 10 cm angefügt. Wenn ein Schlussstück der Länge 5 cm angefügt wird, soll ein return erfolgen und gepfrüft werden, ob die Schlusskoordinaten erreicht wurden. Wenn ja, wird das zur Gesamtlösung hinzugefügt. Ich erhalte aber irrational hohe Werte mit Größen in der Ordnung 10 E 7 usw., was nicht sein kann, da die Gesamtlänge nicht höher sein soll als 200 cm (auch hier erfolgt ein return)
ed209

Ich verstehe nicht was du programmieren willst.

Was meinst du mit haengen bleiben? Ist es eine endlos-Rekursion? Dann sollte Java dir irgendwann um die Ohren fliegen.
In dem Fall wuerde ich mit einem Debugger im Einzelschritt durchgehen und gucken ob alle Aufrufe mit Vernuenftigen Werten passierne.
Haevelin richtige Rekursion?

Hallo, ich möchte drei Teilstücke hintereinander anfügen Tunnel, Bogen GUZS, Bogen UZS, Schluss. Dabei soll Schluss immer durchgeführt werden, wenn der Schlusspunkt gewisse Koordinaten erreicht, sonst nicht. Dabei sollen alle Möglichkeiten diese zu kombinieren (kombiniert werden Tunnel, Bogen GUZS, Bogen UZS und Schluss bricht die Kombination ab), bis zu einer gewissen Länge ermittelt werden. Mein Ansatz funktioniert nicht.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
public void rekursion(ArrayList<Point> apoint, double length, ArrayList<String> alstring)
{ 	if (length >200.0) return;
  	Point neu_tunnel = tunnel_rekursion(apoint.get(apoint.size()-2), apoint.get(apoint.size()-1)); 	length=length+10; 	apoint.add(neu_tunnel); 	alstring.add("Tunnel"); 
//	for (int i=0; i<apoint.size(); i++){
//		System.out.println(apoint.get(i));
 //	}
 //	System.exit(0);
 	rekursion(apoint, length, alstring);
 	Point neu_bogen_UZGS = bogen_UZGS_rekursion(apoint.get(apoint.size()-2), apoint.get(apoint.size()-1)); 	apoint.add(neu_bogen_UZGS);
 	alstring.add("Bogen"); 	length=length+5;
 	rekursion(apoint, length, alstring);
 	Point neu_bogen_GUZGS = bogen_GUZGS_rekursion(apoint.get(apoint.size()-2), apoint.get(apoint.size()-1));
 	apoint.add(neu_bogen_GUZGS);
 	alstring.add("Bogen");
 	length=length+5;
 	rekursion(apoint, length, alstring);
 	Point neu_schluss = schluss_rekursion(apoint.get(apoint.size()-2), apoint.get(apoint.size()-1));
 	System.out.println("Schlusskoordinaten " + neu_schluss.x +" " + neu_schluss.y);
 	if ((Math.abs(neu_schluss.x - 15.0) < 5.0) && (Math.abs(neu_schluss.y - 8.0) < 5.0))
 {
 		apoint.add(neu_schluss); 
		alstring.add("Schluss");
 		gesamt_point.add(apoint);
 		gesamt_elemente.add(alstring);
 		System.out.println("Im Annahmebereich");
 		return;
 	} 
	 	 	 }


Offensichtlich bleibt der Code irgenwie bei der ersten Rekursion hängen.