next up previous contents index
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