[Retour de pause]
Donc si on considere l'algo precedent, Dans le premier appel a Anagrame('CLORISH', '') on entre dans la boucle for et on lance Anagrame('ORISH', 'C') ce qui met en pause l'execution de l'appel precedent, le temps que cet appel soit fini. Or cet appel ne sera fini qu'apres la fin de la boucle for, c'est a dire apres avoir calculé tous les Anagrames commencant par 'CL*****' jusqu'a 'CH******'.
De meme, le calcule de lanagrame de 'CL*****' ne se terminera qu'apres le calcul des anagrames de 'CLO****' a 'CLH****'
Et ainsi de suite.
Il faut donc s'arreter a un moment pour que l'on puisse finir un calcul qui entrainera le depart du calcul de l'anagrame suivant dans la boucle d'appel, et petit a petit finir chacune des procedures et rendre la main au programme.
Cette procedure d'arret intervien avec un test de finalité.
Ici c'est :
Si Taille(Str) = 1 alors Validation de l'anagrame tete+Str
Ne faisant plus appel a la procedure Anagrame, on peut finir la procedure en cours et remonter a l'appel precedant.
Anagrame('SH', 'CLORI') lance le cacul suivant :
i=0 => Anagrame('H', 'CLORIS') qui se termine et donne 'CLORISH'
i=1 => Anagrame('S', 'CLORIH') qui se termine et donne 'CLORIHS'
Si on remonte un coup plus haut :
Anagrame('ISH', 'CLOR') a lancé les calculs suivant :
i=0 => Anagrame('SH', 'CLORI') qui on le sait se termine en donnant 'CLORISH' et 'CLORIHS'
i=1 => Anagrame('IH', 'CLORS' qui se terminera en donnat 'CLORSIH' et 'CLORSHI'
i=2 => Anagrame ('IS', 'CLORH') qui se terminsera en donnat 'CLORHIS' et 'CLORHSI'
ET ainsi de suite .... jusqu'a ce que l'arbre soit parcouru entierement ....
Des questions ?!?
Partager