Bonjour , je voudrais transformer une fonction récursive en une fonction itérative car la version itérative, à un certain moment, cause des ennuis à la mémoire du PC. J'utilise une matrice pour colorier des cases (le but, c'est de pouvoir réussir à coder ce jeu Flood-It, ) avec une récursion sur la fonction elle-même mais là, je dois la coder en impérative en utilisant des piles. Je ne sais pas comment m'y prendre ! :/ ,aidez-moi SVP ;

Voici le code récursif et merci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
int colorie_zone_rec(int ** mat,int i,int j,int cpt,int cl,Grille *grille){
 
 
	int aux=mat[i][j];
	if(((i || j ) <0 ) || ((i || j ) > (grille->nbcase) ) || (!mat[i][j]))
		return 0;
 
	else {
 
		mat[i][j]=cl;
		Grille_chg_case(grille,i,j,mat[i][j]);
		if(aux==mat[i-1][j]){
			cpt+=colorie_zone_rec(mat,i-1,j,cpt,cl,grille);
		}
 
		if(aux==mat[i+1][j]){
			cpt+=colorie_zone_rec(mat,i+1,j,cpt,cl,grille);
		}
 
		if(aux==mat[i][j+1]){
			cpt+=colorie_zone_rec(mat,i,i+1,cpt,cl,grille);
		}
		if(mat[i][j]==mat[i][j-1]){
			cpt+=colorie_zone_rec(mat,i,j-1,cpt,cl,grille);
		}
	}
 
	return cpt;
}