La récursion terminale

Où l'on s'intéresse à une forme particulière de fonction récursive…

OCamlInformatique Optionnelle

Considérons l'exemple suivant

let rec compte_a_rebours n =
    match n with
    | 0 -> [0]
    | n -> n :: (compte_a_rebours (n - 1))
# compte_a_rebours 10 ;;
- : int list = [10; 9; 8; 7; 6; 5; 4; 3; 2; 1; 0]

On notera au passage qu'en Python, il n'y a pas d'optimisation de la récursion terminale. Son auteur, Guido von Rossum s'en explique de manière argumentée ici.