# StackOverflowError



## Daaaaniel (24. Jan 2013)

Hallo,

ich bin gerade dabei eine KI zu programmieren, die einen Käfer auf einem Spielfeld steuern soll. Das Spielfeld besteht aus 20x20 Feldern. Bei jedem Zug kann der Käfer ein Feld weit fahren und sollte die Blätter, die auf den Feldern liegen, einsammeln.
Im Moment hänge ich an einer rekursiven Methode, die die Anzahl der Blätter, die nebeneinander liegen, zählen soll. Diese Methode gibt immer wenn mehrere Blätter nebeneinander liegen einen StackOverflowError aus und ich konnte auch nach längerem Suchen den Fehler nicht finden. Auch wenn es nur 2 Blätter sind und die Methode sich ja eigentlich nicht allzu oft aufrufen dürfte stürzt alles ab.
Es wäre nett, wenn mir jemand helfen könnte.

Code:

```
public void zaehleHaufenGroesse(int x, int y){
        if(y != 0 && karte[x][y-1] == 2){              //2 = Blatt
            haufenGroesse++;                              //haufenGroesse = Anzahl der Blätter, die 
            zaehleHaufenGroesse(x, y-1);               //nebeneinander liegen
        }
        if(y != 19 && karte[x][y+1] == 2){
            haufenGroesse++;
            zaehleHaufenGroesse(x, y+1);
        }
        if(x != 0 && karte[x-1][y] == 2){
            haufenGroesse++;
            zaehleHaufenGroesse(x-1, y);
        }
        if(x != 19 && karte[x+1][y] == 2){
            haufenGroesse++;
            zaehleHaufenGroesse(x+1, y);
        }
    }
```

Fehler:

```
Exception in thread "main" java.lang.StackOverflowError
	at AI.zaehleHaufenGroesse(AI.java:38)
	at AI.zaehleHaufenGroesse(AI.java:44)
	at AI.zaehleHaufenGroesse(AI.java:38)
	at AI.zaehleHaufenGroesse(AI.java:44)
	at AI.zaehleHaufenGroesse(AI.java:38)
```


----------



## Network (24. Jan 2013)

Ist doch ganz einfach, jeder Haufen zählt seinen Nachbarhaufen, was passiert, ist es endet in einer Endlosschleife.
Haufen 1 liegt neben Haufen 2. Es wird gezählt... neben Haufen 1 liegt Haufen 2, danach rufst du die selbe Methode nochmals auf , die überprüft dann an Stelle von Haufen 2 ob dort andere Haufen als Nachbarn liegen, dann rufst du nochmals die Methode auf wieder an Stelle wo Haufen 1 liegt und zählst die Nachbarn.
Endlosschleife mit folgendem StackOverflow

Du musst irgendwie überprüfen ob der jeweilige Haufen bereits gezählt wurde.

Gruß
Net

PS: Benenne bitte die Objekte und MEthoden anderst... Haufen ist... so... falsch in jeder Hinsicht


----------



## Daaaaniel (24. Jan 2013)

Ah Danke für die Antwort, damit dürfte das Problem gelöst sein.
Ja ich weiss dass haufen kein so guter Name ist, aber mir ist gerade nichts anderes eingefallen^^


----------

