Amélioration de SList (SList.java et TestSList.java)

La récursivité est dite terminale si l'appel à la fonction récursive ne fait pas appel à un traitement postérieur. Utiliser la récursivité terminale permet généralement d'avoir une plus grande efficacité car le compilateur pourra, au lieu d'empiler les appels, procéder à une substitution.

Les méthodes length(), append(SList) et reverse() sont implémentées de façon récursive terminale grâce aux équations suivantes (la fonction rappend(l1,l2) a pour effet de concaténer la liste inversée de l1 avec l2) :