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!(np)!
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 Cp1
n1(sans faire intervenir Cp
n1).
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
6. Enfin on essaie d’écrire cette fonction grâce au triangle de Descartes :
(nN)C0
n= 1
(nN)Cn
n= 1
((n, p)N2)|(n > 1)and(p > 1)and(n > p)Cp
n=Cp1
n1+Cp
n1
5 Le calcul de (cos(nx),sin(nx))
Écrire une fonction qui prend en entrée un entier net une parie de valeurs réelles qui sont en fait les valeurs
du cosinus et du sinus d’un certain angle x, et;qui renvoie la paire (cos(nx), sin(nx)). Autrement dit, le deuxième
argument de la fonction est une paire (a,b) telle que a=cosx et b=sinx. Le schéma de calcul doit bien évidemment
être récursif. On pourra se servir des formules de trigonométrie suivantes :
cos(nx) = cos ((n1)x) cos(x)sin ((n1)x)sin(x)
sin(nx) = sin ((n1)x) cos(x)cos ((n1)x)sin(x)
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !