Correction TP 3 : Algorithmes r´ecursifs
Licence 2 MASS semestre 2, 2007/2008
Exercice 1 : Divisibilit´ e
a- Montrons l’h´er´edit´e de la propositionPn : ”10n+1+ 1 est divisible par 9”.
Supposons qu’il existe ntel quePn est vraie et montrons quePn+1 est vraie.
10n+1+ 1 = (9 + 1)×10n+ 1 = (9×10n) + (10n+ 1)
10n+ 1 est divisible par 9. donc il existe k entier tel que 10n+ 1 = 9k D’o 10n+1+ 1 = 9×(10n+k)
DoncPn+1 est vraie.
P est donc h´er´editaire : pour toutnentier,Pn⇒Pn+1. b- – n= 0 : 100+ 1 = 1 + 1 n’est pas divisible par 9,
– n= 1 : 101+ 1 = 11 n’est pas divisible par 9, – n= 2 : 102+ 1 = 101 n’est pas divisible par 9, – n= 5 : 105+ 1 n’est pas non plus divisible par 9.
Pn n’est donc pas vraie pour toutnentier.
c- Montrons que la proposition Pn : ”Tous les crayons d’un paquet de taille n sont de la mˆeme couleur” est h´er´editaire.
Supposons qu’il existe ntel que pour toutk≤n,Pk est vraie et montrons quePn+1 est vraie.
Par hypoth´ese, ncrayons sont de mˆeme couleur. Si on forme un paquet de taille navec le crayon restant, on en d´eduit encore par hypoth`ese qu’ils de mˆeme couleur. Conclusion par transitivit´e, lesn+ 1 crayons sont tous de mˆeme couleur.
P est h´er´editaire.
Or naturellement, un paquet contenant un seul crayon est de couleur unique. On serait alors tenter de conclure en invoquant le principe de r´ecurrence que tous les crayons d’un paquet de taille quelconque sont tous de mˆeme couleur. Seulement, en examinant de plus pr`es la preuve de l’h´er´edit´e, nos constatons qu’elle repose sur l’examen des premiers cas de base. Or, les crayons d’un paquet de taille 2 ne sont pas toujours de la mˆeme couleur. Moralit´e, il est toujours possible d’emporter un paquet de 7 crayons aux couleurs de l’arc en ciel.
d- Soit∈ {−1,1}
Soit pour tout entier n, la propositionPn : ”4n+1 est divisible par 3”.
Montrons que P est h´er´editaire.
Supposons qu’il existe ntel quePn est vraie et montrons quePn+1 est vraie.
P est vraie donc il existe un entierk, 4n+1 = 3k
DoncPn+1 est vraie, ce qui signifie queP est h´er´editaire.
Les deux propositions ”4n+ 1 est divisible par 3” et ”4n−1 est divisible par 3” sont h´er´editaires.
Il faut v´erifier les cas de base : 0 : 40−1 = 0 est divisible par 3 0 : 40+ 1 = 2 n’est pas divisible par 3 1 : 41−1 = 3 est divisible par 3 1 : 41+ 1 = 5 n’est pas divisible par 3
Seul la seconde proposition est vraie pour tout entier n.
En conclusion, il est imp´eratif d’avoir `a la fois un n0 tel que la propri´et´e est vraie pour n0 et la preuve de l’h´er´edit´e pour affirmer que la propri´et´e est vraie pour toutn≥n0.
Exercice 2 : D´ efinition par r´ ecurrence
Les nombres de la suite u s’´ecrivent par la suite de n un, c’est-`a-dire que pour tout n ≥ 1, un = Pn
i=110i−1.
un+1 =
n+1
X
i=1
10i−1
=
n+1
X
i=2
10i−1+ 1
=
n
X
i=1
10i+ 1
= 10.
n
X
i=1
10i−1+ 1
= 10un+ 1
donc on peut d´efinirupar r´ecurrence,un+1=f(un) avec pour toutx,f(x) = 10x+ 1.
Exercice 3 : Int´ egrale
y=f(x)
x y
a b
f(c)
c c+n (b−a)/n
Un petit sch´ema pour rappeler le principe de l’approximation de la valeur d’une int´egrale par des rectangles de largeurnentre deux points.
Sur un intervalle de largeur b−an , l’aire sous la courbe repr´esentative de f est estim´ee par l’aire du rectangle de largeur b−an et de longueurf(c).
L’int´egrale de a `a b est donc ´egale `a la somme de l’aire du rectangle de base [a, a+ b−an ] et de l’int´egrale dea+b−an `a b.
on ne sait pas faire le calcul directement mais on peut faire un appel recursif car on a reduit la taille de l’interval
y=f(x)
x y
b (b−a)/n
a+(b−a)/n a
on sait faire le calcul directement
on doit faire le calcul sur cet intervale [a,b]
Algorithme Integrale(f : fonction;a,b,n: r´eel) : r´eel d´ebut
sia≥b alors
sinon
retourner b−an f(a) + Integrale(f,a+b−an ,b,n−1) fin si
fin
Exercice 4 : Suite de a et de b
Les premiers termes de la suite sont :
u1 = a u2 = b u3 = ba u4 = bab u5 = babba u6 = babbabab u7 = babbababbabba
Algorithme suiteMot(n: entier) : mot d´ebut
sin= 1alors retournera sinon
sin= 2alors retournerb sinon
retournersuiteMot(n−1)suiteMot(n−2) fin si
fin si fin
Exercice 5 : Palindrome
Un palindrome est une chaine de caract`eres qui peut ˆetre lue indiff´erement de droite `a gauche ou de gauche `a droite et donner le mˆeme r´esultat, par exemple ’SOS’ en est un qui comporte un nombre impair de caract`eres.
Algorithme Palindrome(T : tableau de caract`eres; a,b:entier) : bool´een d´ebut
sia≥b alors retournervrai sinon
retourner((T[a] =T[b])et Palindrome(T,a−1,b−1)) fin si
fin
Exercice 6 : Nombre de chemins
Pour traverser la grille par un plus court chemin il faut monter l fois et aller `a droiteL fois. En un sommet de la grille donn´e on a le choix de monter ou d’avancer, le nombre de chemin est donc la somme des nombres de chemins qui commen¸cent par monter (Chemin(l−1,L)) et des chemins qui commencent par avancer (Chemin(l,L−1)). Les cas de base sont les chemin commencant en haut (l= 0) ou `a droite (L= 0)) et alors il ne reste plus qu’un chemin consistant `a ne faire repectivement qu’avancer `a droite ou monter.
Algorithme Chemin(l,L: entier) : entier d´ebut
si((l= 0)ou (L= 0))alors retourner1
sinon
retournerChemin(l−1,L) + Chemin(l,L−1) fin si
fin
Exercice 7 : Le flocon de Von Kock
Algorithme Flocon(c: r´eel;n: entier) : d´ebut
sin= 0alors AV(c) sinon
Flocon(c3,n−1) TG(60)
Flocon(c3,n−1) TG(120)
Flocon(c3,n−1) TG(60)
Flocon(c3,n−1) fin si
fin