Ciao ragazzi, dopo aver fatto funzionare la funzione per attraversare il dannato labirinto, stavo smanettando un po su quest ultima e ho visto una cosa:
Con il codice seguente il programma non funziona:
void scopriuscita(char matrice[12][12], int x,int y)
{
stampa(matrice);
wait (0.1);
matrice[x][y]='x';
if(x==0)
{
system("pause");
return;
}
/* dx */
else
{
if(matrice[x][y+1]=='.')
{
y++;
scopriuscita(matrice,x,y);
}
// down
if(matrice[x+1][y]=='.')
{
x++;
scopriuscita(matrice,x,y);
}
// left
if(matrice[x][y-1]=='.')
{
y--;
scopriuscita(matrice,x,y);
}
// up
if(matrice[x-1][y]=='.')
{
x--;
scopriuscita(matrice,x,y);
}
matrice[x][y]='.';
}
}
mentre con questo codice funziona:
void scopriuscita(char matrice[12][12], int x,int y)
{
stampa(matrice);
wait (0.1);
matrice[x][y]='x';
if(x==0)
{
system("pause");
return;
}
/* dx */
else
{
if(matrice[x][y+1]=='.')
{
scopriuscita(matrice,x,y+1);
}
// down
if(matrice[x+1][y]=='.')
{
scopriuscita(matrice,x+1,y);
}
// left
if(matrice[x][y-1]=='.')
{
scopriuscita(matrice,x,y-1);
}
// up
if(matrice[x-1][y]=='.')
{
scopriuscita(matrice,x-1,y);
}
matrice[x][y]='.';
}
Ora mi chiedo: perche nel primo caso, quando faccio incrementare o decrementare le variabili prima di chiamare la funzione il programma non funziona mentre nel secondo caso quando incremento e decremento direttamente nella chiamata tutto funziona?
:master: :master: :master: :master: :master: :master: