Rekursion



  • Ich habe eine Frage und zwar:Ich habe eine Rekursion geschrieben-->

    public void AnfangLinkeKnoten(Knoten Element,int Zahl)
    {

    if(Element == null)
    {
    return;
    }

    if(Zahl > Element.getZahl())
    {

    AnfangLinkeKnoten(Element.getleft(),Zahl);

    }

    else if(Zahl < Element.getZahl())
    {
    AnfangLinkeKnoten(Element.getright(),Zahl);

    }

    }

    Meine Problem ist, dass das Programm hier geht und nicht den letzten Wert(Daten) von Element zurückliefert sondern wieder an Anfangsposition(mit dem Wert, mit der Variable Element angefangen hat) wandert.Wisst Ihr eigentlich wie ich das ändern kann, damit er nur den letzten Wert vor Rekursionsabbruck liefert.
    Danke



    1. Benutze bitte Code-Tags
    2. Es ist wesentlich übersichtlicher, wenn du dich an die Konventionen hältst:
      Variablen und Methoden, werden klein geschrieben, Klassen groß ...
    3. Was soll denn geschehen, wie sieht die Struktur aus?
    4. Wo hakt's genau?

    MFG John

    PS: Wie sehen demn die getZahl(), getleft(), getright() aus?



  • Also wenn ich es richtig verstanden habe, Hast du eien Start-Knoten mit den Verlinkungemn zu dem vorhergehenden und nächsten Knoten (getleft(), getright()) und du willst die Knoten solange durchwandern, bis der Value vom Paramter Zahl dem des Knotens entspricht(getZahl()). Soweit richtig?
    Du fragst ja überhaupt nicht ab, ob die Zahlen identisch sind, und gibst sie im Falle, dass ja nicht zurück bzw speicherst die letzte Zahl ja garnicht ab ...

    Also:

    int zahl = ...;
    AnfangLinkeKnoten(Knoten Element,int Zahl){
       if(Zahl == Element.getZahl()){
          zahl = Zahl;
          return;
       }
    }
    

    MFG John



  • Ja fast!!!!!!!!!
    Vielleicht hast du von Bäumen etwas gehört, ich gehe Baum von Wurzel aus und orientiere mich etweder auf die Rechte oder Linke Seite von der Baum.Wenn ich auf eine Stelle gelange,dass Rechte und Linke Seite null ist dann breche ich die Rekursion und will den wert die die auf diesen letzten Knoten zeigt haben.
    Danke 🙂



  • Baum so aus holz und mit grünen Blättern?! 😃

    Wie wär's dann mit:

    int zahl = ...;
    AnfangLinkeKnoten(Knoten Element,int Zahl){
       if(Element.getleft() == null && Element.getRight() == null){
       //wenn der Knoten null ist
       //bzw. wenn der Wert / die Zahl null sein soll
       if(
             Element.getleft().getZahl() == null
             && Element.getRight().getZahl() == null)
          zahl = Zahl;
          return;
       }
    }
    


  • Danke für deine Hilfe.

    Ich habe es gelöst.Bedanke mich noch einmal,dass du Zeit für mich genommen hast.
    Das macht ja nicht jeder!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 👍



  • NP, manchmal sieht man halt den Wald vor lauter Bäumen nicht 😃


Anmelden zum Antworten