suivant: La factorielle
monter: Définitions récursives
précédent: Définitions récursives
  Table des matières
  Index
Terminaison
Une définition récursive doit comporter une condition
d'arrêt, qui est ici m <= 0 : si
cette condition est satisfaite (c'est-à-dire si sa valeur est
true), l'invocation récursive n'est pas exécutée. La présence
d'une condition d'arrêt est une condition nécessaire mais non suffisante
pour la terminaison du programme. Par exemple, remplaçons dans l'exemple
précédent, la condition m <= 0 par m = 0 , et
l'invocation dans la fonction principale, sommerEntiers(3) par
sommerEntiers(-3) :
static int sommerEntiers(int m) {
return (m = 0) ? 0 : sommerEntiers(m-1) + m;
// invocation récursive
}
public static void main(String[] args) {
System.out.println("somme de 1 à 3 = " + sommerEntiers(-3));
// --> ne termine pas
}
}
On obtient maintenant la suite infinie d'invocations :
37#37
Rene' LALEMENT
2002-11-07