• Aucun résultat trouvé

Travaux Dirig´ es d’algorithmique n

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Dirig´ es d’algorithmique n"

Copied!
2
0
0

Texte intégral

(1)

Travaux Dirig´ es d’algorithmique n

o

2

Cours d’informatique de Deuxi` eme Ann´ ee

—L2.1—

R´ ecursivit´ e

La r´ecursivit´e est une m´ethode de programmation tr`es puissante. Elle permet d’´ecrire des programmes faciles `a comprendre et souvent efficaces bien que son principal inconv´enient est d’obliger le compilateur `a utiliser une pile pour m´emoriser les calculs interm´ediaires.

x

Exercice 1. Factorielle

La fonction factorielle d’un entier positif ou nul n, not´ ee n!, est d´ efinie par

n! =

(

1 si n = 0, (n

1)!

n si n > 0.

Ecrire une fonction

C

, r´ ecursive, qui calcule la factorielle d’un entier positif. Ecrire une fonction

C

, it´ erative, qui calcule la factorielle d’un entier.

x

Exercice 2. Puissance

Soient a un entier et n un entier positif ou nul. On se propose de calculer a

n

en utilisant les trois propri´ et´ es suivantes :

1. a

n

=

(

a

a

n−1

si n > 0,

1 si n = 0.

2. a

n

=





(a

2

)

bn/2c

si n > 0 est pair, a

(a

2

)

bn/2c

si n est impair,

1 si n = 0.

3. a

n

=





(a

bn/2c

)

2

si n > 0 est pair, a

(a

bn/2c

)

2

si n est impair,

1 si n = 0.

´

ecrire, pour chacune des trois propri´ et´ es susnomm´ ees, une fonction

C

r´ ecursive qui retourne a

n

en utilisant cette propri´ et´ e.

1

(2)

x

Exercice 3. Etrange

Apr` es ex´ ecution du programme suivant, qu’a-t-on en sortie ? Que fait la fonction

Etrange

et en particulier, ` a quel moment a lieu le “passage ` a la ligne” ?

#include <stdio.h>

void Etrange(int n) {

if (n <= 0) printf("\n");

else

{ Etrange(n-1); printf("%d ", n);}

}

En d´ eduire une fonction r´ ecursive qui affiche les n premiers entiers dans l’ordre croissant et une autre qui les affiche dans l’ordre d´ ecroissant.

2

Références

Documents relatifs

Ecrire une fonction ´ Liste CreerFusion (Liste Un,Liste Deux,Liste *Fusion) r´ ealisant cette op´ eration avec cr´ eation de nouvelles cellules. La liste *Fusion contient les

Une file d’attente est un type de donn´ ee permettant l’ajout d’un ´ el´ ement et la suppression de l’´ el´ ement pr´ esent depuis le plus longtemps dans la file (premier

Nous concluerons par un exercice visant ` a stocker des entiers de fa¸con efficace dans des tableaux de listes chaˆın´ ees.. x

Donner un automate d´eterministe complet sur l’alphabet {a, b} qui reconnaˆıt les mots dont la deuxi`eme lettre est un a.. x

Trouvez un automate d´ eterministe et complet A 6 reconnaissant les nombres dont l’´ ecriture binaire est multiple de 6 par les deux m´ ethodes suivantes :2. Directement en

Montrer qu’il existe un chemin r´eussi qui contient un circuit unique- ment ´etiquet´e par des a.. En d´eduire que le langage L n’est reconnaissable par

iii) Dessiner un automate mod´elisant le jeu. Chaque ´etat repr´esente une situation diff´erente. Tout ´etat est initial sauf l’´etat dans lequel tous les jetons ont la

[r]