Statt
rekursiv könntest du auch
iterativ arbeiten, dann ist ein Umschalten viel einfacher, da man direkt springen kann, ohne alle Zwischenstation durchlaufen zu müssen.
Es gibt sogar ein
TStack<T>, was man nutzen könnte.
(oder
TQueue<T>, jenachdem wie rum gefüllt/verarbeitet wird ... FIFO/LIFO)