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.