Post on 04-Apr-2015
TD32 IMACS
guillerm@laas.fr
Romaric GUILLERM
Algo-Progen Ada
TD3 - Récursivité
TD3
Arbre d’appel pour n=3 et p=2 :
Combinaison(3,2)
Combinaison(2,2)Combinaison(2,1)
Combinaison(1,1)Combinaison(1,0)
Resu=1
Resu=1
Resu=1
Resu=2
Resu=3
Somme( )
TD3
8 4 5
8 + Somme( )
4 5
4 + Somme( )
5
5 + Somme()
5
9
17
0
17
TD3
Rappel sur le type « String » :
C’est un tableau non-contraint de caractères
Type String is array(Positive range <>) of Character;
On a accès aux attributs : first, last, length, …
TD3
Version itérative :
Si le mot a une longueur de 0 ou 1 alors on retourne « true »
Sinon : On calcul la demi longueur du mot : demi Pour i de 0 à demi-1
Si les caractères aux positions mot’first+i et mot’last-i sont différents alors on retourne « false »
Fin du si Fin de la boucle pour On retourne « true » si on n’a encore rien
retourné Fin du si
TD3
Version itérative :
TD3
Version récursive :
Si le mot a un longueur de 0 ou 1 alors on retourne « true »
Sinon : Si les caractères en début et en fin du mot sont
différents alors on retourne « false » Sinon :
On retourne le résultat de la détermination de palindrome sur le mot privé de ses premier et dernier caractères
Fin du si Fin du si
TD3
Version récursive :
TD3 Palindrome :
Écrire un programme qui saisit un mot fourni par l'utilisateur et affiche s'il s'agit ou pas d'un palindrome.
TD3
TD3 L’idée :
H H H H
H . . H
H . H H
H . H H
*
H H H H
H . H
H . H H
H . H H
* *
1
2
3
4
1
H H H H
H H
H . H H
H . H H
**
1
false 2
false
H H H H
H H
H . H H
H . H H
**
H H H H
H H
H . H H
H . H H
**
3
false4
false
H H H H
H H
H . H H
H . H H
**
false
2true
H H H H
H . H
H . H H
H . H H
**
1
false
H H H H
H . H
H H H
H . H H**
2
true
H H H H
H . H
H H H
H . H H**
*
true
A afficher !
TD3 Algorithme :
Si la position donnée est différente de " . " alors : on retourne « false »
Sinon si la position donnée se trouve sur un bord du labyrinthe alors : on marque cette position de " * " on affiche le labyrinthe on retourne « true »
Sinon on marque la position courrante P avec " * " on cherche la sortie à partir de la case située à l’est de P Si on n’a pas trouver de sortie alors :
on cherche la sortie à partir de la case située au sud de P Si on n’a pas trouver de sortie alors :
on cherche la sortie à partir de la case située à l’ouest de P Si on n’a pas trouver de sortie alors :
on chercher la sortie à partie de la case située au nord de P Fin du si
Fin du si Fin du si on retourne le résultat de notre recherche dans les différentes directions
Fin du si
TD3