@ omata:
Wäre vielleicht trotzdem nicht verkehrt gewesen zu erwähnen, dass es sich bei deinem Beispiel um die bereits angesprochene Rekursion handelt.
Dann könnte sich der geneigte Leser und Fragensteller das Beispiel ansehen und ggf. direkt etwas zu dem Thema raussuchen, falls Bedarf besteht.
Was dein Beispiel auch zeigt ist, dass es sich immer lohnt den Code soweit auseinander zu nehmen und in (Sub)Routinen zu packen, da sich so die Übersichtlichkeit verbessert und einem selber (und auch anderen) die Fehlersuche erleichtert. Goldene Regel hier am Arbeitsplatz: "Eine Funktion sollte nie länger als eine Bildschirmseite sein."
So genug Offtopic.
GreetZ Olli