DEUG MIAS 24
Types et Structures
de données
TD 2
Programmation récursive
1.Somme des carrés
1.1.
Écrire une définition de
la fonction somme_carre
de type int -> int
telle que (somme_carre n)
retourne la somme, pour i variant de 0 à n, des carrés de i.
1.2.
Écrire une définition de
la fonction sc
de type int -> int
telle que (sc n)
retourne la valeur de l'expression n(n+1)(2n+1)/6.
1.3.
Comparez les valeurs retournées
par ces deux fonctions pour quelques valeurs de leur paramètre.
2.Somme des inverses
Écrire une définition de
la fonction somme_inverse
telle que (somme_inverse n) retourne la somme, pour i variant de 1 Ã n,
des inverses de i. Quel type choisissez-vous pour le résultat de cette
fonction ?
3.Répétition d'une chaîne
Écrire une définition de
la fonction repete
telle que, lorsque s
est une chaîne de caractères et n
un entier naturel, (repete s n)
retourne la concaténation de n répétitions de la chaîne s.
4.Récurrence sur l'écriture
des entiers
4.1.
Soit n un entier naturel et
rkrk-1...r0 sa représentation en base
b de sorte que
n = rkbk
+ rk-1bk-1 + ... + r0
On pose q0 =
rkbk-1 + r k-1bk-2 + ... +
r1 et donc n = q0b + r0.
Quelles sont les expressions
Ocaml permettant de calculer q0 et r0 en fonction
de n et de b ?
4.2.
Écrire une fonction somme_chiffres
qui, appliquée à un entier naturel n
retourne la somme des chiffres de sa représentation décimale.
Écrire une fonction étendant
somme_chiffres
aux entiers relatifs.
4.3.
Écrire une définition de
la fonction to_octal
telle que (to_octal n)
retourne l'entier naturel dont la représentation décimale est identique
à la représentation en base 8 de l'entier naturel n.
5.Récurrence sur une chaîne
de caractères
Écrire une définition de
la fonction est_dans
de type char -> string -> bool
telle que (est_dans c s)
retourne true si et seulement si le caractère c
a au moins une occurrence dans la chaîne s.