next up previous contents index
suivant: Les fonctions des informaticiens monter: Définitions récursives précédent: Récursivité multiple   Table des matières   Index


Récursivité mutuelle

Un ensemble de définitions de fonctions est mutuellement récursif si la relation « 39#39 invoque 47#47 » admet un cycle : 48#48 invoque ...invoque 49#49 invoque 48#48. L'exemple suivant est classique (et sans grand intérêt) :

class Parité {
  static boolean impair(int n) {
    if (n == 0) {
      return false;
    } else {
      return pair(n-1);
    }
  }
  
  static boolean pair(int n) {
    if (n == 0) {
      return true;
    } else {
      return impair(n-1);
    }
  }
}

Les fonctions Parité.pair et Parité.impair s'invoquent mutuellement :

50#50

La dernière invocation retourne false :

51#51

Les définitions mutuellement récursives sont surtout utiles pour travailler sur des structures de données mutuellement récursives, par exemple en analyse syntaxique.



Rene' LALEMENT 2002-11-07