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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| On va noter :
[n] la valeur n que le niveau de récursion en cours doit traiter
a->[n] le 1er appel récursif de la procédure à un niveau donné
si on marque a->X, alors on est à la fin de la liste,
et la procédure ne fait rien
w(n) On va écrire la valeur n
b->[n] le 2ème appel récursif de la procédure à un niveau donné
si on marque b->X, alors on est à la fin de la liste,
et la procédure ne fait rien
Le temps passe de haut en bas,
et le niveau de récursivité est indiqué par les décalages à droite.
La liste contient les valeurs 1,2,3,
on entre donc dans la procédure avec un pointeur valide,
et la valeur vaut 1:
[1]
a->[2]
| a->[3]
| | a->X
| | w(3)
| | b->X
| w(2)
| b->[3]
| a->X
| w(3)
| b->X
w(1)
b->[2]
a->[3]
| a->X
| w(3)
| b->X
w(2)
b->[3]
a->X
w(3)
b->X
En prenant les ordres d'affichage de haut en bas,
donc dans l'ordre temporel, on a :
3 2 3 1 3 2 3
Résultat d'un test :
3 2 3 1 3 2 3 |