Pequeño fallo, no leí lo de que había que multiplicar el resultado por el valor del último dígito :)
Ya aprovecho para dejar solo un return en la función.
Código C++:
Ver originalint f( int numero )
{
int to_return = numero;
int cifras
= (int)log10( numero
); if ( cifras > 0 )
{
int ultimo = numero % 10;
int primero
= numero
/ pow( 10, cifras
);
numero
-= primero
* pow( 10, cifras
);
to_return = f( numero );
if ( primero >= ultimo )
to_return *= primero;
}
return to_return;
}