Moin...
Denke auch an die Freigabe der TStringlist Inhalt. Bedenke, das du bei jedem rekursiven Aufruf eine neue Instanz dazu bekommst (bekommen würdest).
Besser: Die Liste die den Result repräsentiert außerhalb der Funktion verwalten(wie schon erwähnt z.B. als Parameter übergeben oder als privates Feld)