Ich weiß, dass es einen einfachen Weg gibt, dies zu tun, aber meine Rekursionsfähigkeiten sind aus der Übung. Gegeben eine Datenbanktabelle, die drei Felder hat:
id
label
child_id
Ich sollte in der Lage sein, eine rekursive Funktion zu erstellen, die eine Ausgabe wie diese ergibt:
child (input of program)
parent1
parent2
grandparent1
great-grandparent1
grandparent2
grandparent3
parent3
grandparent4
grandparent5
Ich weiß, dass es einfach sein sollte, aber ich kann meinen Verstand nicht dazu bringen, die mentale Gymnastik zu vollziehen, damit es funktioniert. Ist das überhaupt eine gute Idee? Es sieht so aus, als ob ich am Ende eine ganze Reihe von Datenbankverbindungen offen lassen könnte.
Ich glaube, das ist der Teil, der es mir schwer macht. Ich fange mit einem child_id an und arbeite mich nach oben. Und ein Kind kann viele Eltern haben. Die Ausgabe wäre also die Kind-ID an der "Wurzel" des Baums und dann die Eltern und Großeltern für jeden Zweig. Je mehr ich darüber nachdenke, ist es einfach die traditionelle Formel "ein Elternteil, viele Großeltern", außer für die Semantik. Vielleicht denke ich aber auch nur zu viel darüber nach.
Die Tabelle würde etwa so aussehen:
table parents
id child_id label
1 NULL child
2 1 parent1
3 1 parent2
4 1 parent3
5 3 grandparent1
6 3 grandparent2
7 3 grandparent3
8 5 great-grandparent1
9 4 grandparent4
10 4 grandparent5