#include <iostream> // cin, cout et cerr.

using namespace std ;

void
ma_fonction_1(const size_t & n)
{
	if ( n <= 9 ) {
		cout << n ;         // Affichage du nombre qui est un chiffre.
		return ; }          // Fin de la récursion.
	ma_fonction_1(n/10) ; // Appel récursif.
	cout << n%10 ;        // L'opérateur `%' donne le reste de la division euclidienne ;
	return ;              // on affiche ainsi le chiffre des unités.
}
void
ma_fonction_2(const size_t & n)
{
	size_t ordre_de_grandeur = 1 ;
	size_t m = n ;
	// Détermination de l'ordre de grandeur du nombre.
	while ( (m /= 10) > 0 ) {     // `m /= 10' est équivalent à `m = m/10'.
		ordre_de_grandeur *= 10 ; } // `x *= 10' est équivalent à `x = x*10'.
	m = n ;
	// Affichage des chiffres à partir de la gauche.
	while ( ordre_de_grandeur != 0 ) {
		cout << m/ordre_de_grandeur  ; // Affichage du chiffre le plus à gauche.
		m %= ordre_de_grandeur ;       // Réduction du nombre.
		ordre_de_grandeur /= 10 ; }    // Réduction de l'ordre de grandeur.
}
void
test(const size_t & n)
{
	cout << n << ' ' ; ma_fonction_1(n) ; cout << ' ' ; ma_fonction_2(n) ; cout << endl ;
}
int
main()
{
	test(0) ;
	test(2) ;
	test(10) ;
	test(123) ;
	test(12345678) ;
	return 0 ; // Retour au système d'exploitation avec le code `0'.
}
