Vous êtes sur la page 1sur 4

Informatique

Cours 1

Explicite, itratif ou rcurrent

Figure 1 : Les fractales sont des motifs caractristiques des suites dfinies par rcurrence.

Les suites
Lorsque l'on manipule des listes de valeurs (mesures exprimentales) ou que l'on traite des valeurs
(valeurs financires par exemple), on est amen dfinir des suites de nombres.
Dans ce cours on note u, la suite qui n associe un nombre u(n) .
Pour calculer les termes de la suite, on peut dfinir une fonction dans python qui admet en entre n et
renvoie en sortie la valeur de u(n).

1 Dfinition explicite de la suite


Une suite est dfinie de faon explicite lorsque les termes u(n) peuvent tre calculs par une formule
mathmatique faisant intervenir n.
Exemple simple :

En pseudo code (pas normalis)


Fonction puissance_explicte(n)
Renvoyer 2**n
Fin Fonction puissance_explicite
En python
def puissance_explicite(n):

return 2**n
Appel de la fonction dans la console
>>> puissance_explicite(3)
8

Lyce Jules Ferry Cannes

Page 1 sur 4

TSI2

Informatique

Cours 1

Explicite, itratif ou rcurrent

2 Suite rcurrente
Une suite n'est pas toujours dfinie pas une relation explicite partir de n (soit la relation n'est pas connue,
soit ce n'est pas la dfinition utilise).
Une suite peut tre ainsi dfinie par rcurrence partir des valeurs prises pour les valeurs infrieurs de n
partir de(s) valeur(s) initiale(s).
Exemples :

rcurrence simple :
2.
1
avec
0
1.
rcurrence double : suite de Fibonacci telle que F(n)=F(n-1)+F(n-2) avec F(0)=0 et F(1)=1

Pour calculer les valeurs de u(n), il existe 2 mthodes de calcul en programmation :


- la mthode itrative,
- la mthode rcurrente.

2.1 Calcul par itration des termes de la suite


Il s'agit de calculer successivement toutes les valeurs de u de u(0) jusqu' u(n).

2.1.1 Algorithme itratif


En pseudo code (pas normalis)
Fonction puissance_iteratif(n)
s 1
Pour i de 1 n faire
s s*i
Fin Pour
Renvoyer s
Fin Fonction puissance_iteratif
En python :
def puissance_iteratif(n):
s=1

# condition initiale u(0)=1

for i in range(1,n+1):
s=s*2

# calcul itratif des puissances de 2 jusqu' n

return s
Utilisation de la fonction
>>> puissance_iteratif(3)
8

2.1.2 Comprhension du calcul itratif


Pour comprendre le droulement d'un processus itratif, il est intressant de dresser une table prsentant
l'volution des variables.
Exemple avec n=3

itration initialisation
i
s
1

1e 2e

3e

1 2 3
2 4 8

Figure 2 : tableau d'volution des variables dans la boucle.

Lyce Jules Ferry Cannes

Page 2 sur 4

TSI2

Informatique

Cours 1

Explicite, itratif ou rcurrent

2.2 Calcul par rcurrence des termes de la suite


Le calcul par rcurrence s'obtient par une fonction rcursive.
Une fonction est rcursive

lorsqu'elle s'appelle.

La fonction rcursive est souvent plus courte dans son criture qu'une fonction itrative mais son
fonctionnement est plus difficile comprendre. Sa vitesse d'excution n'est pas forcment meilleure.
Il faut par contre veiller bien dfinir la fin des appels rcurrents :
- les appels la fonction se font avec une valeur strictement infrieure n,
- les valeurs initiales mettent fin la rcurrence.
Restriction importante:
au del de 1000 tages de rcurrence, python affiche une erreur RuntimeError: maximum recursion depth
exceeded (la pile de calcul est dpasse).

2.2.1 Algorithme rcursif


En pseudo code (pas normalis)
Fonction puissance_recursif(n)
Si n = 1 alors
Renvoyer 1
Sinon
Renvoyer puissance_recursif(n-1)*2
Fin Si
Fin Fonction puissance_recursif
En python
def puissance_recursif(n):
if n==0 :

# condition de fin : condition initiale u(0)=1

return 1
else :

return puissance_recursif(n-1)*2

# appel rcursif

Utilisation de la fonction
>>> puissance_recursif(3)
8

2.2.2 Comprhension du calcul rcursif


Le meilleur moyen de comprendre un calcul rcursif est de tracer un arbre des appels
(l'arbre a plusieurs branches si la rcurrence porte sur au moins 2 indices de profondeur) .
Exemple pour puissance_recursif(3)
u(3)=2.u(2)

u(2)=2.u(1)

u(1)=2.u(0)

=8

=4

=2
Ressources :
Damien Broizat
Patrick Beynet UPSTI-

Figure 3 : Arbre des appels par rcurrence.

Lyce Jules Ferry Cannes

u(0)=1

Page 3 sur 4

TSI2

Informatique

Cours 1

Explicite, itratif ou rcurrent

Annexe : Pseudo code


Affectation
a1
Oprations arithmtiques
Opration
addition

Symbole Exemple Rsultat


+
1+2
3

soustraction

1-2

-1

multiplication

2*3

division

3/2

1.5

5 div 2

5 mod 2

3^2

partie entire de la division euclidienne

div

modulo : reste de la division euclidienne

mod

puissance

Oprations de test
Comparaison
Symbole Exemple Sortie avec a=2
Egale
=
a=2
True
Pas gale

a2

False

Suprieur

>

a>2

False

Suprieur ou gale

a2

True

Infrieur

<

a<2

False

Infrieur ou gale

a 2

True

Instruction conditionnelle
Si n mod 2 == 0 alors
pair vrai
Sinon
pair faux
Fin Si

Boucle inconditionnelle
S 0
Pour i = 1 n faire
SS+i
Fin Pour

Oprations logiques
ngation

Symbole
~

ou

et

&

Fonction
Fonction negatif(x)
s=x
Si x > 0 alors
s=-s
Fin Si
Fin Fonction negatif

Boucle conditionnelle
i 0
k 0
Tant que i n faire
i = Entrer ("Donner un nombre entier compris entre 1 et 10 : ")
k k+1
Fin Tant que
Afficher("Gagn en ",k," coups !")

Lyce Jules Ferry Cannes

Page 4 sur 4

# n est une donne


# demande faite lutilisateur

TSI2

Vous aimerez peut-être aussi