Vous êtes sur la page 1sur 2

Module : Algorithmique et structures de Données Durée : 1h30

Groupe : INF01 Nombre de pages : 2


Enseignant : Wael Sellami

Série 2
Récursivité

Exercice 1 :
1) Écrire une fonction récursive qui retourne la somme des chiffres d’un entier N donné.

Exemple : (123 == > 1 + 2 + 3 = 6)

2) Écrire une fonction récursive qui permet de déterminer si un entier N saisi au clavier est
premier ou pas. (Un nombre premier n’est divisible que par 1 ou lui-même).

3) Ecrire une fonction récursive qui calcule le PGCD de deux entiers naturels non nuls.

Exercice 2 :

On souhaite écrire un algorithme qui permet de convertir un nombre décimal en un nombre


binaire. Pour cela on demande de :

1. Écrire un sous-algorithme qui permet de réaliser la conversion d’une manière récursive.

2. Un algorithme qui permet de faire les déclarations nécessaires, saisir un nombre positif et
afficher sa valeur binaire.

3.Traduire l’algorithme et le sous-algorithme en langage C.

Exercice 3 :

On souhaite écrire un programme C qui permet de saisir une chaîne de caractères, d’afficher
ses caractères dans les deux sens de lecture et de vérifier si elle est palindrome. Pour cela on
demande de :

1. Écrire une fonction AfficheCh (char *ch) qui permet d’afficher les caractères d’une chaîne
d’une manière récursive dans le même sens de lecture (A rappeler qu’une chaîne de caractères
se termine par '\0').

1
2. Écrire une fonction AfficheInvCh (char *ch) qui permet d’afficher les caractères d’une chaîne
d’une manière récursive dans le sens inverse de la lecture.

3. Écrire une fonction Palindrome (char *P1, char *P2) qui permet de vérifier d’une manière
récursive si une chaîne est palindrome ou non sachant que P1 contient l’adresse du premier
caractère de cette chaîne et P2 contient l’adresse de son dernier caractère.

4. Écrire la fonction main() qui permet de tester les fonctions précédentes.

Exercice 4 :

On définit une suite entière récurrente Un comme suit :

1) Ecrire une fonction itérative calculant le terme de rang n de cette suite.

2) Ecrire une fonction récursive calculant le terme d’ordre n de cette suite.

3) Quelle est la plus rapide des deux fonctions ? Pourquoi ?

Exercice 5 :

Soient u et v les deux suites définies par :

Ecrire deux fonctions CalculerU(a,b,n) et CalculerV(a,b,n) pour calculer respectivement les


deux termes Un et Vn des deux suites.

Vous aimerez peut-être aussi