stack overflow

0

W moim programie używam rekurencji do tworzenia labiryntu i znajdowania drogi w labiryncie.
Przy planszy 200 x 50 program działa w nieskończoność,
ale jak np podwoję rozmiary to narysuje tylko kilka labiryntów i wyskakuje "stack overflow".
No i dziwi mnie tylko to, że ten error wyskakuje przy tworzeniu tablicy 4 liczb, w funkcji która produkuje kolejność kierunków drążenia drogi w labiryncie.

funkcja() {
	int* byla = new int[4];     // Stack overflow!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
           ... // coś tam.
           delete byla;   // tablica jest na końcu usuwana.
}

Poza tym funkcje rekurencyjne biorą tylko 2 parametry int więc nie zabierają dużo pamięci.

0

Ale pewnie ta funkcja jest wywoływana zbyt wiele razy. Za mało kodu pokazałeś, żeby coś móc z tego wywnioskować.

0
  1. Nie używa się w ten sposób rekurencji, a przynajmniej nie w takim języku
  2. Na stosie masz też wszystkie lokalne zmienne...
0

Daj to "// coś tam" i postaraj się skorzystać z rekurencji ogonowej. To normalna funkcja czy może konstruktor?

0

Tego chyba się nie da zrobić rekurencją ogonową, albo przynajmniej w miarę trudno, bo jak algorytm generuje ślepy zaułek, to wraca do momentu, gdzie można pójść inną drogą. Na pewno stosem się to da zrobić.
To, co dałem to zwykła funkcja pomocnicza, dla funkcji generującej labirynt.

1 użytkowników online, w tym zalogowanych: 0, gości: 1