EXERCICE. Montrer que n N, I'appel Fact(n) de la fonction Fact définie ci-dessous, se termine et calcule n!

 

CORRECTION


Prouvons la terminaison

A chaque appel n le paramètre décroit, puisque N est un ensemble ordonné bien fondé, il n'existe pas de suite infini décroissante, donc n s'annulera.

Quand n s'annule on retourne 1. Cela termine les appels récurssifs, on dépile alors l'ensemble des appels précédents. Donc le programme se termine.


Montrons que n N, I'appel Fact(n) calcule n!

On considère la propriété P: "Fact(n)=n!"

Il y a un seul cas où la fonction retourne directement une valeur. Si n=0 alors le résultat est 1. Pour n=0 la propriété P est vérifiée.

Supposons P(n) vrai.

Fact(n+1)=(n+1)*Fact(n)

et

Fact(n)=n!

Donc Fact(n+1)=(n+1)*(n!) est P(n+1) est vérifié.