sure
diesen fehler hab ich hier monatelang angepriesen xD
aber hier hat jemand eine gute definition:
1.
Der entsteht (meist) durch endlos rekursiven Aufruf von Funktionen.
Bei jedem Aufruf einer Funkion, muß sich das "Programm" merken an welche Stelle es zurückspringen soll. Dies merkt es sich auf in einem Speicherbereich genannt Stack, der aber nur begrenzten Speicherplatz hat. Wenn nun keinerlei Rücksprung mehr erfolgt läuft irgendwann dieser Speicher "über", das nennt sich dann Stack Overflow.
2.
Ein Stack ist ein Stapelspeicher.
Also ein Datenstruktur welche mehrere Elemente aufnehmen kann (wie ein Array also z.b.).
Wenn ein Elemente hinzugefügt wird wird es an das Ende des Stacks angefügt.
Und nur auf dieses, als letztes hinzugefügtes, Element kann man zugreifen.
Man kann also nur das Element, welches man als erstes hinzugefügt hat, sehen wenn man alle anderen herausgenommen hat.
Deswegen bezeichnet man diese Form auch als "Kellerspeicher".
Man wirft bildlich gesprochen alle Elemente nacheinander in einen tiefen Keller und kann daher nur das oberste und als letzte hineingeworfene Element sehen.
Als Darstellung (von Wikipedia entnommen):
Die Register in einer CPU sind sehr oft Stacks.
Allerdings können sie nicht unendlich viele Elemente aufnehmen.
Im Falle der Rekursion wird jede Rekursion nacheinander in den Stack eingefügt.
Das heißt die tiefste Rekursionsebene liegt im Stack ganz oben und wenn man die erste Ebene ausrechnen will muss man erst alle Ebenen von der tiefsten her abarbeiten.
Hier ist es aber nun so das es zu viele Rekursionsebenen sind - zu viele als das der Stack sie aufnehmen kann und es erscheint der "Stack Overflow" Fehler.
3.
call ("Main") -> return ; hier der fehler
Sonst mal bisschen über Recursion Level googlen.
Und bitte mal in der Hilfe nachlesen, wie man Funktionen aufruft (Tipp von mir: nicht mit call

)
ansonsten ,
Schau dir doch mal in der Online-Hilfe im Kapitel "Language Reference" die Functions an