par
naholyr » 07 juil. 2006, 15:01
L'idéal est de passer la profondeur en paramètre facultatif :
function recursive(..., $profondeur = 0) {
...
recursive(..., $profondeur+1);
...
}
Ainsi dans la fonction, le paramètre $profondeur est la profondeur de l'appel, tout simplement
Pour le nombre de passages, on utilisera une variable globale, ou mieux, statique :
function recursive(..., $profondeur = 0) {
static $passages = array();
$passages[$profondeur] = isset($passages[$profondeur]) ? $passages[$profondeur]+1 : 1;
...
recursive(..., $profondeur+1);
...
}
Ainsi dans ta fonction tu as une variable sous forme de tableau tel que $passages[$i] = "nombre de passages à la profondeur $i".
Selon les possibilités du langage (je te l'ai mis en php pour que tu situes bien), l'argument "profondeur" sera ou non facultatif (sinon il nécessitera de le définir à 0 au premier appel), la variable "passages" sera statique ou globale, mais dans tous les cas le tableau fonctionnera puisqu'il s'agit d'un tableau indexé sur des entiers, et qui sera bien sûr rempli dans l'ordre (impossible de passer de profondeur 3 à 5 sinon c'est qu'il y a un problème

donc si on définit $passages[$n+1] c'est que $passages[$n] est définie).
Pareil pour l'état : une fonction $etat statique (idéalement) ou globale que tu définis juste avant d'appeler "stocker()" ou "couper()".
L'idéal est de passer la profondeur en paramètre facultatif :[php]function recursive(..., $profondeur = 0) {
...
recursive(..., $profondeur+1);
...
}[/php]
Ainsi dans la fonction, le paramètre $profondeur est la profondeur de l'appel, tout simplement ;)
Pour le nombre de passages, on utilisera une variable globale, ou mieux, statique :[php]function recursive(..., $profondeur = 0) {
static $passages = array();
$passages[$profondeur] = isset($passages[$profondeur]) ? $passages[$profondeur]+1 : 1;
...
recursive(..., $profondeur+1);
...
} [/php]
Ainsi dans ta fonction tu as une variable sous forme de tableau tel que $passages[$i] = "nombre de passages à la profondeur $i".
Selon les possibilités du langage (je te l'ai mis en php pour que tu situes bien), l'argument "profondeur" sera ou non facultatif (sinon il nécessitera de le définir à 0 au premier appel), la variable "passages" sera statique ou globale, mais dans tous les cas le tableau fonctionnera puisqu'il s'agit d'un tableau indexé sur des entiers, et qui sera bien sûr rempli dans l'ordre (impossible de passer de profondeur 3 à 5 sinon c'est qu'il y a un problème :lol: donc si on définit $passages[$n+1] c'est que $passages[$n] est définie).
Pareil pour l'état : une fonction $etat statique (idéalement) ou globale que tu définis juste avant d'appeler "stocker()" ou "couper()".