#include <iostream>
#include <iomanip>

using namespace std ;

// La fonction factorielle est définie sous sa forme récursive.
size_t fact(size_t n) {
	// La variable `compteur' est statique ; elle est initialisée
	// à zéro.
	static size_t compteur = 0 ;
	cout << "Bonjour, je suis la fonction `fact'.\n" ;
	cout << "Je suis appelé pour la " << ++ compteur << " fois\n" ;
	cout << "L'argument courant est égal à " << n << endl ;
	if ( n == 1 )
		return 1 ;
	else
		return n*fact(n-1) ;
}

int main() {
	fact(4) ;
	return 0 ;
}
