Exercices complémentaires sur les bases procédurales de Java
Université Paris Sud
Exercice 1 Les tours de Hanoï
Ce problème est un classique de la programmation récursive, où les méthodes s’appelent elle-mêmes pour résoudre un problème plus simplement. Il s’agit ici de déplacer un en- semble deN anneaux d’un piquetAà un piquetC, en se servant d’un piquet intermédiaire B. Les anneaux ont des diamètres tous différents ; nommonsai les anneaux (i= 1, . . . N) où le rayon de aj est supérieur au rayon de ai+j (j = 1, . . . N −1). Les anneaux sont au départ placés sur le piquet A, en ordre, c.à.d.ai+j au-dessus de aj (j = 1, . . . N−1). Le but est qu’ils se retrouvent à la fin en ordre sur le piquetC, sachant qu’aucun déplacement ne peut créer d’inversion d’ordre (placer un anneau d’un certain diamètre sur un anneau d’un diamètre plus petit).
Un algorithme possible pour résoudre ce problème utilise une récurrence.
On effectuera un programme avec interface textuelle (affichant les anneaux par leur numero et les piquets par leur lettre), par exemple, pour trois anneaux :
A : 1 2 3 B : C : A : 1 2 B : C : 3 A : 1 B : 2 C : 3 A : 1 B : 2 3 C : A : B : 2 3 C : 1 A : 3 B : 2
1
2 Exercices complémentaires sur les bases procédurales de Java
C : 1 A : 3 B : C : 1 2 A : B : C : 1 2 3
Exercice 2 Évaluation de polynôme par le schéma de Horner
Créer un programme qui calcule un polynômeptel que
p(x) =anxn+an−1xn−1+. . .+a0
par deux méthodes :
1. en utilisant la formule ci-dessus ; 2. en utilisant le schéma de Horner :
p(x) = (. . .(((anx+an−1)x) +an−2)x+. . .+a1)x+a0
Les entrées (n,a0, . . .,an etx) se feront par saisie au clavier. L’algorithme correspondant peut s’écrire comme suit
1 i = n - 1 2 bi = an
3 si i < 0, stop // le resultat p(x) est dans b-1.
4 i = i - 1
5 bi = bi+1 * x + ai+1 6 aller a l’etape 3.