Cita:
Iniciado por eferion Esa función está mal... no tiene que devolver el número de pasos hasta llegar al 1... tienes que devolver "el promedio", es decir, si esa función recibe un "4" tiene que hacer el siguiente cálculo: ( PASOS_COLLATZ( 4 ) + PASOS_COLLATZ( 3 ) + PASOS_COLLATZ( 2 ) + PASOS_COLLATZ( 1 ) ) / 4
menuda pifiada me he mandado xD.. esto es lo que provoca el andar apurado y el no aisimilar bien el problema
pero bueno para el caso dejo mi solución:
Código C++:
Ver originalunsigned collatz(unsigned n )
{
if ( n == 1 ) return 0;
return (n % 2) ? 1 + collatz(n * 3 + 1) : 1 + collatz(n / 2);
}
double promedioCollatz(unsigned n)
{
double x = collatz(n);
return (n == 1) ? x :(x + (n-1) * promedioCollatz(n-1)) / n;
}
Saludos