next up previous contents index
Next: Récurrences Up: No Title Previous: Définitions récursives

Récursivité mutuelle

   

Plus généralement, un ensemble de définitions est mutuellement récursif si la relation << f appelle g >> admet un cycle : tex2html_wrap_inline5128 appelle ...appelle tex2html_wrap_inline5130 appelle tex2html_wrap_inline5128 .   L'exemple suivant est classique (et sans grand intérêt) :

int pair(int n);

int impair(int n) {
  if (n == 0) {
    return 0;
  } else {
    return pair(n-1);
  }
}

int pair(int n) {
  if (n == 0) {
    return 1;
  } else {
    return impair(n-1);
  }
}

Les fonctions pair et impair s'appellent mutuellement :

displaymath5120

Le dernier appel retourne 0 (c'est-à-dire << faux >>) :

displaymath5121

La définition de la première fonction doit être précédée de la déclaration   de la seconde fonction : tout nom doit être déclaré avant d'être utilisé. Les définitions mutuellement récursives sont surtout utiles pour travailler sur des structures de données mutuellement récursives.



Rene Lalement
Mon Sep 30 18:22:54 MET 1996