leosansan, aún se puede compactar un poquito más para hacerlo "más legible" :D
Código C++:
Ver original#define DIV(n) (n / 10)
#define MD(n) (n % 10)
#define MUL(n) (n * 10)
#define MOD(n) MD( DIV( n ) )
#define MUD(n) MUL( DIV( n ) )
int f ( int n )
{
if ( n < 10 ) return n ;
return ( MOD(n) >= MD(n) ? MOD(n) : 1 ) * f ( MUD(DIV(n)) + MD(n) ) ;
}