TD 6 d’Introduction à la programmation
Exercices sur la récursivité (suite)
1 Multiplication par un entier p
Dans cette question, nous cherchons à réaliser une multiplication sans avoir recours à l’opérateur de multiplication
de Caml.
1. Écrire une fonction qui à partir de deux entiers positifs net pcalcule le produit n×ppar une suite d’additions.
2. Est-ce que la fonction peut être utilisée pour deux entiers négatifs?
3. Est-ce qu’elle peut être utilisée avec un entier positif et un entier négatif?
4. Est-ce que l’algorithme peut être généralisé pour la multiplication entre flottants, ou entre un entier et un flottant ?
2 Renverser un nombre quelconque
Nous avons vu dans les TD précédents comment renverser un nombre compris entre 0 et 99. Vous avez vu en cours
l’algorithme récursif qui permet de renverser un nombre quelconque. En déduire une fonction qui, à partir d’un entier
positif nne contenant aucun 0 dans ses chiffres, renverse les chiffres de cet entier. Par exemple l’image de 356457 par
cette fonction serait 754653.
3 Un nombre palindrome
Rappelons qu’un palindrome est un nombre qui, lorsqu’on inverse l’ordre de ses chiffres ne change pas de valeur.
Par exemple, 43134 est un palindrome. Nous avons vu en cours un algorithme permettant d’indiquer si un entier
positif nne contenant aucun 0 dans ses chiffres est un palindrome ou non. Cet algorithme ne s’appuie pas sur celui
de la fonction renverser vue plus haut. Écrire en Caml une fonction qui, étant donnée un tel entier nindique s’il s’agit
d’un palindrome ou non.
4 Les combinaisons Cp
n
Le nombre de combinaisons de pobjets pris dans un ensemble de nobjets différents est de :
Cp
n=n!
p!(n−p)!
Dans la suite, nous allons essayer plusieurs manières d’écrire une fonction qui, à partir de deux entiers positifs net p,
renvoie ce nombre de combinaisons.
1. On peut écrire cette fonction en utilisant la fonction factorielle ci-dessus.
2. En calculant C7
14 par exemple, calculer le nombre de fois où le produit 7×6×... ×2est calculé.
3. Exprimer Cp
nen fonction de Cp−1
n−1(sans faire intervenir Cp
n−1).
4. En déduire une fonction capable de calculer Cp
nà partir de pet de n.
5. Essayer cette fonction pour calculer C3
4: est-ce qu’on obtient la valeur attendue ?
1