Hallo Sysps
Das ist ein interessantes Problem. Fast schon schildkrötenartig, jedenfalls hätte Zeno seine Freude! Achilles würde sprinten und Gödel dreht sich im Kreise
Ich kenne zwei Arten, das Problem zu lösen (wenn es nicht schon im "Grundwortschatz" einer Programmiersprache vorhanden ist): iterativ oder rekursiv. Aus Performance-Gründen auf aktuellen Von-Neumann-Rechnern würde man die rekursive Variante vermeiden, und zur iterativen greifen. Ein Beispiel dafür hat Anke gegeben. Diese iterative Version ist aber erst mit V5 und VB Script möglich.
Die rekursive Variante bliebe also, und ich wäre geneigt, einen Indikator sich selbst aufrufen zu lassen. Leider hat Herr Knöpfel rekursive Aufrufe gesperrt (*), ist Investox doch für Programmier-DAUs gemacht ... dementsprechend produziert die rekursive Version eine billige Fehlermeldung (siehe Bild).
Leider funktioniert es auch nicht, wenn sich zwei gleichartige Funktionen unterschiedlichen Namens gegenseitig aufrufen, um die Fehlermeldung wegen dem "Selbstaufruf" zu umgegehn. Herr Knöpfel erkennt einen "zirkulären" Aufruf leider ebenfalls zur Zeit des Syntax-Checks - und es klappt wieder nicht ...
Schön wäre es, wenn in sinnvolle Fehlermeldungen soviel Aufmerksamkeit geflossen wäre - aber so bleibt immerhin ein interessantes ungelöstes nettes intellektuelles Problem
Zwar habe ich selbst eine schöne Quersummern Funktion in VB Script unter INV V5, aber ich bin an rekursiven Lösungsmöglichkeiten rein aus "Weiterbildungsgründen" interesseirt! Hoffentlich hat jemand da was in der Hinterhand!
PS *: Es gibt Laufzeitumgebungen, die das Problem unendlicher Rekurionen eleganter lösen: die Rekurison wird natürlich zugelassen und es wird die Stack-Tiefe mitgezählt. Dazu existiert ein System-Parameter, nennen wir ihn maxdeep=10000. Wird zur Laufzeit eine Rekursion von maxdeep überschritten., so wird die Kette abgebrochen und eine Laufzeit-Fehlermeldung produziert. Etwas eleganter, als ein gut gemeinter Syntax Check ...