Da der rekursive Funktionsaufruf die letzte Anweisung der Methode war, würde ich so etwas eigentlich schon dem Compiler überlassen, dass dahingehend zu optimieren ("Tail Recursion").
Der Delphi
Win32-Compiler optimiert das (glaube ich) zwar nicht dahingehend, aber das geht alles irgendwie auch schon weit über die ursprüngliche Frage hinaus