Folco (./206) :
Bon ben ça foire à la compilation, et c'est logique pour la raison que je pensais : on ne peut avoir, dans fact, une référence à n de main :
C'est pas exactement ça, c'est que si tu lui passes n - 1 il ne peut pas convertir ça en référence.
(même si en théorie il pourrait te passer une référence vers l'objet temporaire qu'a généré l'opération n-1)
Ca devrait marcher ça normalement:
int fact(int &n) {
if (n >= 1) {
n--;
return (n + 1) * fact(n);
}
else
return 1;
}
int main() {
int x = 10;
std::cout << fact(x) << std::endl;
}