Con dos funciones llego al mismo resultado que
eferion. Lo pongo más compactado pero
es lo mismo:
Código C++:
Ver original#include <stdio.h>
#define NUMERO 17
double Collatz ( unsigned num ) ;
double promedioCollatz ( unsigned num ) ;
int main ( ) {
printf ( "\n%g\n" , promedioCollatz
( NUMERO
) ) ; return 0 ;
}
double Collatz ( unsigned num ) {
return ( num == 1 ) ? 0 : ( ( num % 2 != 0 ) ? 1 + Collatz ( 3 * num + 1 ) : 1 + Collatz ( num / 2 ) ) ;
}
double promedioCollatz ( unsigned num ) {
return ( num == 1 ) ? 0 : ( Collatz( num ) + ( num - 1 ) * promedioCollatz( num - 1 ) ) / num ;
}
No olvidar mi anterior propuesta usando dos argumentos.
¡¡¡Saluditos!!!