Essayons de créer une fonction récursive terminale calculant , comme cette valeur s'obtient par des multiplications successives, l'accumulateur est une valeur par lequel le résultat sera multiplié. Nous souhaitons donc mettre un point une fonction qui retourne . On obtiendra en initialisant à . On détermine une relation de récurrence entre et de la sorte : , donc , à savoir . Allons-y,
Prouvons par récurrence sur que .
On calcule donc en invoquant . On redéfinit de la sorte :
Vous avez des doutes ? Traduisez donc ces sous-programmes en C en observez ce qui se passe...