tablica alokowana dynamicznie gdzie przechowuje wartości x i y
tablica globalna -> char **tablica;
x i y też są globalne
labirynt:
##.####
##...##
[...]
wejście x, y w których zapisane są współrzędne labiryntu
bool sciezka(int x, int y){
printf("[%d] [%d]", x, y);
// wsp poza labiryntem, wchodzi gdy prawda
if(tablica[x][y]==' '){
return false;
}
// sceizka byla ekslorowana, wchodzi gdy prawda
if(tablica[x][y]==true){
return false;
}
//wsp wyjscia
if((x==16) && (y==14)){
printf("Znaleziono droge do wyjscia! [%d][%d]", x, y);
return true;
}
if( sciezka(x+1,y)==true){
printf("[%d][%d]", x, y);
tablica[x][y]=true;
return true;
}
if( sciezka(x-1,y)==true){
printf("[%d][%d]", x, y);
tablica[x][y]=true;
return true;
}
if( sciezka(x,y+1)==true){
printf("[%d][%d]", x, y);
tablica[x][y]=true;
return true;
}
if( sciezka(x,y-1)==true){
printf("[%d][%d]", x, y);
tablica[x][y]=true;
return true;
}
return false;
}
Zadanie polega na znalezieniu wyjścia z labiryntu przy wykorzystaniu rekurencji. Debugowanie tej funkcji pokazuje mi, że parser nie wchodzi w ogóle do żadnego if, ani już w ogóle do tej funkcji po prostu wykonuje ją w nieskończoność sam jej nagłówek. Na razie bym prosił o pomoc w zrozumieniu tego kodu. W main wykonuje ją w ten sposób.
sciezka(x, y);
Zastanawiam się nad dodaniem trzeciego wymiaru do tablicy gdzie przechowywałbym wartość logiczną 0 którą bym przestawiał na 1 w tedy kiedy dane pole było już sprawdzane przez mój algorytm. Taka flaga.
Co do tego pomysły jak to jest z wartością logiczną w C czy jak przypisze do danej komórki tablicy wartość true, to ona mi się przypisze tak jakbym tworzył dla niej dodatkowy wymiar w sensie czy oprócz mojej wartości # w komórce również będzie zapisywana w tamtej chwili wartość logiczna. Jeśli tak czy zawsze w komórce w tablicy mam zapisaną domyślnie już jakąś wartość logiczną ?