probleme avec la fonctions recursive
Bonjour a Tous,
dans le cadre d'un projet de programmation d'un jeu d'othello j'utilise l'algorithme
alpha-beta.
En resumé j'ai :
1/ une fonction qui invite l'ordinateur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| . int inviter_ordinateur(liste d'arguments)
. {
. ...
. nb_coup_possible = coup_possible(liste d'arguments);
. for( i = 0; i < nb_coup_possible; i++)
. {
. coup = tab_coup[i];
. ...
. for(prof = 1; ; prof++) /*approfondissement iteratif */
. {
. ...
. score = alphabeta(prof, &coup, plateau, ...)
. ...
. }
. ...
. }
. ...
. } |
2/
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int alphabeta(int prof,int *coup, int plateau[], ...)
. {
. ...
. nb_pions_retournés = maj_damier(...);
. nbr_coup_possible = coup_possible(liste d'arguments);
. ...
. if(nb_pions[BLANC] +nb_pions[NOIR]=64 || prof <= 0)
. return eval(...);
. ...
. for(i = 0;i<nbr_coup_possible)
. {
. ...
. score = - alphabeta(prof - 1 , &coup, plateau , ... - alpha , - beta);
. ...
. }
. ...
. } |
.
En fait mon probleme est que :
jusqu'a return eval tout va bien mais apres, au lieu de revenir directement vers
la fontion inviter_ordinateur(...), il continue dans alphabeta(..) comme si la fonction
appelante est alphabeta et non inviter_ordinateur.
si quelqu'un(e) peut m'expliquer pourquoi et comment faire pour que le retour se fasse
directement vers la fonction appelante.
je vous remercie amplement a l'avance.
:?