Enseignement > Pascal > TP > Résursivité  

PROGRAMMATION ORIENTEE OBJET

TP n° 1

Objectifs :

  • Récursivité
  • Manipulation de tableau

1. Factorielle

Ecrire une fonction récursive permettant de calculer la factorielle d'un nombre entier, selon la formule

n ! = n* (n-1) ! et 0 !=1

2. Combinaison Cnp

La théorie des ensembles a montré que le nombre total de combinaisons de p éléments pour un ensemble de n éléments est Cnp = n ! / (p ! * (n-p) !)

Ecrire une fonction Cnp permettant de calculer cette combinaison.

Ecrire un programme permettant de tester cette fonction.

Constater que cette fonction donne un résultat faux lorsque Cnp deviend grand (exemple n=13 et p=6)

Pourquoi ?

3. Simplification

On montre que le calcul de Cnp peut être simplifié : Cnp = n*(n-1)*(n-2)**(n-p+1) / p!

Programmer cette formule. Est-elle plus efficace ?

Pourquoi cette formule permet-elle de calculer des Cnp plus grands ?

4. Cnp récursif

On montre que Cnp = Cn-1p + Cn-1p-1 et C0p=1 et Cpp=1.

Programmer cette formule. Peut-on calculer des Cnp plus grands qu'avec les fonctions précédentes ?

Est-elle très efficace ?

5. Triangle de Pascal

La formule précédente est en fait l'interprétation du triangle de Pascal :

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

Ecrire une fonction utilisant un tableau à 2 dimensions permettant de calculer Cnp grâce au triangle de Pascal. Pourquoi cette méthode est-elle plus efficace que la fonction récursive précédente ?

6. Triangle de Pascal simplifié

Il est possible d'écrire une fonction n'utilisant un tableau qu'à 1 seule dimension permettant de calculer Cnp grâce au triangle de Pascal