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