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: