Rekursives Programmieren

E

EcIcIY

Hallo ich will eine Methode schreiben die rekursiv auf einen Baum zugreift.

Im groben soll er den Pfad am ende ausgeben, mein Problem ist das er ihn nur ausgeben soll, wenn er das entsprechende Objekt gefunden hat, was auch immer vorkommen wird...

das soweit mein Funktionierender Quelltext:

public void selectBinary(String search, String binaryIn) //while schleife
{
String binary=binaryIn;
if (content==search) System.out.println(binary);
else if (left.getContent().indexOf(search)>=0) {binary+="0"; left.selectBinary(search, binary);}
else {binary+="1"; right.selectBinary(search, binary);}


}

aber statt System.out.println, soll er den wert zurückgeben...

wenn ich aber return nehme, meint er "missing returnstatement", was ja auch klar ist, da er es nur macht wenn der fall gegeben ist: wenn er es gefunden hat. Ich persöhnlich weiß, dass er es immer finden wird, kann man das dem Programm auch irgendwie mitteilen?

wenn ich das return am ende mache, gibt er ja gleich beim ersten durchgang den wert zurück und nicht dann wenn er es gefunden hat, was auch nicht mein ziel ist...

ich will das er nach und nach den pfad erstellt und wenn er das objekt gefunden hat, dann soll er ihn zurückgeben...


wäre über hilfe oder ideen und anregungen sehr erfreut

MfG EddY
 
Hi EddY,

Deine Abbruchbedingungen sind mir nicht klar. Was ist denn, wenn der Baum zu Ende ist, sprich es keinen Blätter mehr gibt.
Ein Rückgabewert sollte doch immer da sein und wenn er null ist.
Ansonsten bekommt doch die aufrufende Methode gar nicht mit, dass nichts gefunden wurde.

Gruß
joschi
 
wenn keine blätter mehrdran sind, dann ist es das objekt was er finden soll...

ich speicher da buchstaben und je höher man kommt werden sie zusammengefasst


unbenanntbi8.jpg





also er geht immer den pfad lang wo er den buchstaben findet, wenn er halt nach links geht kommt eine 0 dazu wenn er nach rechts geht eine 1... bis er den buchstaben GENAU gefunden hat... weil der inhalt==dem gesuchten ist... da kommen auch keine unterknoten mehr...
 
Hi,

ok, aber was spricht dagegen so etwas zu tun?

Java:
public String selectBinary(String search, String binaryIn) //while schleife
{
String binary=binaryIn;
if (content==search) return(binary);
else if (left.getContent().indexOf(search)>=0) {binary+="0"; return left.selectBinary(search, binary);}
else {binary+="1"; return right.selectBinary(search, binary);}

}

Ciao
joschi
 

Neue Beiträge

Zurück