Académique Documents
Professionnel Documents
Culture Documents
I. Introduction
Lorsqu’on veut utiliser une boucle dans un programme, on doit se poser les
questions ci-dessous :
Quelle boucle utiliser : Pour la boucle for, le nombre d’itérations est connu à
l’avance et ce nombre est fixé dans la syntaxe de la boucle. Pour la boucle while
les instructions sont répétées un certain nombre de fois et le temps
d’exécution peut être plus ou moins long parfois infini (cas anormal).
Les instructions à répéter : elles doivent être bien choisies afin d’atteindre
l’objectif, la validité du résultat escompter et d’assurer la terminaison de la
boucle.
Si ce variant prend un nombre fini de valeurs, alors on est certain que la boucle
se termine.
Mhamed AIT AAMMI HADI CPGE IBN GHAZI RABAT
2
Exemple :
Selon ces deux principes, elle doit rester vrai à la fin de la boucle, ce qui
constitue une preuve de la validité du résultat.
Généralités :
Calcul de la complexité :
Pour la fonction Somme, ce paramètre c’est n. Si la somme se fait sur une liste,
le paramètre n sera la taille de la liste. Généralement, le nombre d’opérations
élémentaires dépend des valeurs prises par les entrées des programmes et de
celles transmises à une fonction.
Mhamed AIT AAMMI HADI CPGE IBN GHAZI RABAT
4
Classes de Complexité :
Mhamed AIT AAMMI HADI CPGE IBN GHAZI RABAT
5
Exemple 1 :
Exemple 2 :
Exemple 3 :
Exemple 4 :
Exemple 4 :
def fact(n):
f=1 1 oe
for i in range(2,n+1):
f=f*i 2 oe f*i et f=. 2*(n-1) 1+2*(n-1)+1
return(f) 1 oe
n=10 1 oe
x= fact(n) 1 + 1 + 1 +2*(n-1)+1 = 4 + 2*(n-1) 0(n)
C(Exemple4) = 0(n)
Exemple 5 :
def premier(n):
i=2 1 oe
while i<=n//2 and n%i!=0: 4 oe dision+test+modulo+test
i+=1 2 oe : addition + affectation log2(n)
def factrec(n):
if n==0: C(n)=C(n-1)+1 avec C(0)=1
return 1
return n*factrec(n-1) Donc C(factrec)=O(n)