Rekursion abbrechen



  • CStoll schrieb:

    Wenn du schon zitierst, dann achte bitte darauf, wen 😉

    Solltest vielleicht nicht soviel posten. 😃
    Lass mich mal kurz nachrechnen, 12 Tage dabei, fast 400 Beiträge, dh 33 Beiträge pro Tag. Respekt!

    1234567789 schrieb:

    Also ich hab noch keinen Code (außer Assembler) gesehen, bei dem man ein goto nicht vermeiden hätte können.

    Natürlich kannst du immer goto vermeiden, die Frage ist nur, zu welchen Kosten. Versteh mich nicht falsch, ich bin kein Verfechter von goto. Nur ist es unsinnig sich stur gegen die Verwendung von goto zu stellen, auch wenn der aussergewöhnliche Fall eintreten sollte, dass es mal die einfachste Lösung darstellt. Es geht auch nicht darum, seinen Code möglichst so aufzubauen, dass man goto erst gar nicht braucht. Das versteht sich eigentlich von selbst.

    1234567789 schrieb:

    Also ich hab noch keinen Code (außer Assembler) gesehen, bei dem man ein goto nicht vermeiden hätte können.

    Was allerdings nicht für die Allgemeinheit zutreffen muss.

    1234567789 schrieb:

    Man kann natürlich jede Rekursion mit hilfe eines Stacks in ein iteratives prog. umwandeln

    Kann sein, dafür ist ein Stack aber gar nicht notwendig.

    1234567789 schrieb:

    aber obs dann übersichtilcher ist?

    Wie bereits gesagt, bei solchen Sachen geht es in erster Linie aber nicht um Übersichtlichkeit, sondern um Codeverständnis.



  • So wie ich das sehe, sucht dein Algorithmus sehr lange nach etwas, was es nicht gibt, bzw. findet es sehr sehr oft.

    In etwa so koennte eine Loesung aussehen.

    void findNode(Node* start, Node* found, int id)
    {
        if (start->id == id) {
            found = start;
            return;
        }
    
        start->visit();
    
        for (int i = 0; i < successors.size(); ++i) {
            if (!successor[i]->visited())
                findNode(successor[i], found, id);
        }
    }
    

    Dabei ist die erste Abbruchbedingung recht "weak". Es kann passieren (wird ganz sicher), dass er trotzdem alle Knoten besucht.



  • groovemaster schrieb:

    CStoll schrieb:

    Wenn du schon zitierst, dann achte bitte darauf, wen 😉

    Solltest vielleicht nicht soviel posten. 😃
    Lass mich mal kurz nachrechnen, 12 Tage dabei, fast 400 Beiträge, dh 33 Beiträge pro Tag. Respekt!

    Danke 🙂 (*grml* warum gibt's hier keinen errötenden Smilie?)


Anmelden zum Antworten