Académique Documents
Professionnel Documents
Culture Documents
1/2
Non terminale :
( )= ( )+ ( )
( )= ( − )+ ( )
( )=
(1). Le théorème de Master n’est pas applicable dans le premier cas pair car b =2/3 <1. Ainsi, à
chaque fois la fonction est divergente ( le n est multiplié et pas divisé) dans le calcul si le
nombre est impair, et par conséquent la complexité est infinie ( la fonction n’est pas une
primitive récursive) .
(2). Dans le cas pair, par substitution, on obtient une relation linéaire
( ) = ( − 1) + 1 = ( − 2) + 1 + 1 = ( − 2) + 1 + 1 + 1 = (0) + ⋯ 1 + 1 =
3.3. Calculer la complexité de la fonction récursive f si on remplace la fonction dans le cas impair
avec ( ) = 2 ∗ + +
3.4. Si Possible, écrire la version itérative avec une pile (vous pouvez utiliser les fonctions d’une
pile sans définition) :
La fonction est fonction non primitive récursive donc ce n’est pas nécessaire d’écrire la
solution itérative ou récursive.
3
( )=3∗ ( )+1
2
( ) = ( − 1) + 1
(0) = 0
2/2
Rappels :
8 1 5 10 2
Pour une table de N= 6 8 1 5 10 2
2 8 1 5 10
10 2 8 1 5
5 10 2 8 1
1 5 10 2 8
1. Ecrire une Procédure itérative qui permet d’effectuer un décalage circulaire à droite d’un
tableau N d’une seule case
Deux Solutions :
2/2
2. Ecrire une Procédure récursif qui permet d’effectuer un décalage circulaire à droite d’un
tableau N d’une seule case
Les deux solutions précédentes utilisables dans la version récursive :
Tmp=T[N-1]
Procédure Récursif _Déc( T[],N,tmp : Entier)
Si N=0 Alors T[0] ← tmp
Sion
T[i-1]← T[i]
Récursif_Déc(T[],N-1,tmp)
FProcedure
5. Ecrire une Procédure récursive qui permet de créer une matrice M à partir d’un tableau de
taille N entrée comme argument.
FSI
FProcedure
2/2
6. Ecrire la Procédure récursif qui permet d’affiche la matrice, i et j sont initialisés à 0
M=
2/2
7.1. Ecrire un sous-algorithme de Tri qui permet de ranger une matrice M’quelconque (quel que
soit les positions de 1,2,3) pour aller à M :
Chaque ligne contient les mêmes composantes :1,2,3
Les permutations faites seulement sous formes de décalage à droite
La vérification est faite pour chaque ligne indépendamment
3 2 1 1 2 3
M’= 3 1 2 M= 3 1 2
1 2 3 2 3 1
La solution est d’écrire 3 fonctions :
Vérification : qui vérifie seulement que le premier élément de la matrice (i,0) est celui
de la table de base T dans l’état initiale et après décalage de chaque ligne.
Recherche : qui cherche le positon de cet élément et renvoie le nombre de décalage à
faire
Permutation : qui permet de décaler la table m fois pour que l’élément retourne a sa
place
Procédure Dec_fois(M[][],i,N,k)
Variables : m : Entier
Pour m de 0 à k-1 Faire
Declage(M[i][], N) // le décalage faite seulement pour une ligne i
FP
FProcedure
2/2
7.2. Ecrire un sous-algorithme de Tri qui permet de ranger une matrice M’quelconque (quel que
soit les positions de 1,2,3) pour aller à M dont le diagonal est 1 :
Le diagonal doit avoir la valeur 1, les autres composantes :2,3 hors diagonales
Les permutations faites sous formes de décalage pour les lignes et les colonnes
La vérification est faite seulement pour le diagonal
1 2 1 1 3 3
M’= 3 1 2 M= 2 1 2
3 2 3 2 3 1
2/2
8. Proposer un sous-algorithme de Tri qui permet de ranger une matrice M’quelconque (quel que
soit les positions de 1,2,3) pour aller à M (Question 7.1) ; en utilisant seulement des
permutations sous forme de décalage dans les deux sens à droite et à gauche pour les lignes et
les colonnes.
2/2