Un ensemble de définitions est mutuellement récursif si la relation << f invoque g >> admet un cycle : f1 invoque ...invoque fn invoque f1. L'exemple suivant est classique (et sans grand intérêt) :
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 pair() et impair() s'invoquent mutuellement
: