Ver Mensaje Individual
  #27 (permalink)  
Antiguo 21/11/2014, 07:29
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 6 meses
Puntos: 49
Respuesta: Petando la pila. Problemas y retos usando recursividad.

Cita:
Iniciado por eferion Ver Mensaje
Esa función está mal... no tiene que devolver el número de pasos hasta llegar al 1... tienes que devolver "el promedio".......................

No se si me explico.
Sí campeón, te explicas alto y claro.

"Creo" no haberla pifiado. En lugar de dos funciones como eferion he usado dos argumentos, espero que sea válido:

Código C++:
Ver original
  1. #include <stdio.h>
  2. #define NUMERO  8
  3.  
  4. double promedioCollatz ( unsigned num0 , unsigned num ) ;
  5.  
  6. int main ( ) {
  7.   int n = promedioCollatz ( NUMERO , NUMERO ) ;
  8.   printf ( "\n%g\n" ,  ( ( n - 1 ) /  ( ( float ) NUMERO) ) ) ;
  9.   return 0 ;
  10. }
  11.  
  12. double promedioCollatz ( unsigned num0 , unsigned num )  {
  13.   if ( num0 == 1 )
  14.     return 1 ;
  15.   return ( ( num == 1 ) ? promedioCollatz ( num0 - 1 , num0 - 1  ) : ( num %  2 != 0 ) ?  1 + promedioCollatz ( num0 , 3 * num + 1 ) : 1 + promedioCollatz ( num0 , num / 2 ) ) ;}

¡¡¡Saluditos!!!