:: Enseignements :: ESIPE :: E3INFO :: 2011-2012 :: Algorithmique ::
[LOGO]

Récursivité, suite


Exercice 1 - Somme

Ecrire une fonction itérative calculant la somme d'un tableau d'entiers. Même question avec une fonction récursive.

Exercice 2 - Conversion itérative

Pour convertir une chaîne de caractères en nombre, on parcourt tout ses chiffres en commençant par la gauche, en multipliant le résultat courant par dix, avant d'ajouter le chiffre qui se trouve à droite de la position courante. Ecrire une fonction itérative calculant cela. On supposera que la chaîne d'entrée n'est ni NULL ni vide, et qu'elle ne contient que des chiffres.

Exercice 3 - Conversion récursive

Même question que prédemment, mais cette fois-ci, en récursif. Attention: il faudra cette fois-ci parcourir la chaîne de la droite vers la gauche. Vous avez le droit d'utiliser strlen pour la mesurer.

Exercice 4 - strcmp récursive

Ecrire une fonction récursive comparant deux chaînes de caractères X et Y. Si les premiers caractères de X et de Y sont différents, on a fini. Sinon, si on n'est pas à la fin des chaînes, on recommence récursivement sur les sous-chaînes restantes.

Exercice 5 - PGCD

L'algorithme d'Euclide pour calculer le PGCD de deux nombres non nuls A et B est le suivant: on considère une suite u initialisée avec u(0)=A et u(1)=B. Tant que u(n) est non nul, on a u(n+1)=u(n-1) modulo u(n). Quand u(n) est nul, le résultat est la valeur u(n-1). Donner deux fonctions calculant cela, l'une itérative, l'autre récursive.

Exercice 6 - Test de tri

On peut tester récursivement qu'un tableau d'entier est trié selon la méthode suivante. On coupe le tableau en deux, et on regarde si les deux moitiés sont bien triées. Si c'est le cas, il suffit de comparer le maximum de la partie gauche avec le minimum de la partie droite pour savoir si le tableau global est trié. Ecrire une fonction qui teste si un tableau est trié selon ce principe. Attention: votre fonction devra renvoyer 3 informations: le tableau est-il trié ? quel est son minimum ? quel est son maximum ?