:: Enseignements :: ESIPE :: E3INFO :: 2013-2014 :: Algorithmique ::
[LOGO]

Récursivité terminale


On poursuit l'écriture de fonctions récursives, un peu plus complexes, qui permettent de résoudre des problèmes classiques, mais "coûteux"...

Exercice 1 - Sac à dos...

Reprendre la fonction de résolution du problème du sac à dos vu en cours et la transformer afin qu'elle affiche une trace de son déroulement, les sommes partielles cherchées ainsi que l'entier testé.

Exercice 2 - Tours de Hanoï

Ecrire un programme affichant (sous forme ASCII) les différents états du problème des tours de Hanoï pour un entier positif n (petit).
Les plateaux seront symbolisés par des entiers de 1 à n.
On pourra utiliser scanf("%*c") pour attendre que l'utilisateur tape une touche entre chaque mouvement.

Exercice 3 - Monayeur

Ecrire un programme permettant de résoudre le problème du monayeur: étant donné une suite croissante de n entiers positifs w0=1, w1, ... wn-1 et un entier strictement positif S, trouver la suite des coefficients a0, a1, ... an-1 telle que
S = Σi=0n-1 ai*wi et
Σi=0n-1 ai soit minimal.

La suite des wi (les valeurs des pièces) sera lue sur la ligne de commande, et pourra être représentée par un tableau valeurs tel que valeurs[0] soit égal à1.

On traitera le problème pour différentes valeurs de S entrées par l'utilisateur (arrêt lorsqu'une valeur négative ou nulle est fournie).

Dans un premier temps, on affichera uniquement le nombre minimal de valeurs intervenant dans la somme Σi=0n-1 ai.

La version suivante affichera la suite des coefficients ai, stockés sous la forme d'un tableau coeffs.
Attention: il faudra penser à utiliser des copies de ce tableau lors des appels récursifs pour pouvoir récupérer les "meilleurs" coefficients au final.