En vista de que todas las soluciones expuestas (respetando la plantilla) son similares a la de
eferion quisiera exponer otra pero usando tres funciones para variar :
Código C++:
Ver originalunsigned int collatz(unsigned int n )
{
if ( n == 1 ) return 0;
return (n % 2) ? 1 + collatz(n * 3 + 1) : 1 + collatz(n / 2);
}
double totalCollatz(unsigned int n)
{
return (n != 0) ? collatz(n) + totalCollatz(n - 1) : 0;
}
double promedioCollatz(unsigned int n)
{
return totalCollatz(n)/n;
}
Saludos