Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Función recursiva

Estas en el tema de Función recursiva en el foro de C/C++ en Foros del Web. Hola. Estoy empezando con las funciones recursivas (este es mi primer ejercicio). Debo calcular 1 + 1/2 + 1/3 ... +1/n-1 + 1/n Tengo esto: ...
  #1 (permalink)  
Antiguo 07/04/2012, 16:33
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 0
Función recursiva

Hola.

Estoy empezando con las funciones recursivas (este es mi primer ejercicio).

Debo calcular 1 + 1/2 + 1/3 ... +1/n-1 + 1/n

Tengo esto:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. double calculo(int n)
  5. {
  6.     if(n == 1) return 1;
  7.    
  8.     else
  9.     return 1/n+calculo(n-1);
  10. }
  11.  
  12.  
  13.  
  14. int main()
  15. {
  16.     double resultado;
  17.     int ult_termino;
  18.    
  19.     printf("Ultimo termino: ");
  20.     scanf("%d", &ult_termino);
  21.    
  22.     resultado = calculo(ult_termino);
  23.    
  24.     printf("El resultado es %f\n", resultado);
  25.    
  26.     system("pause");
  27.     return 0;
  28. }

Me devuelve siempre 1 (normal, si n va a terminar siempre siendo 1, y he puesto como condición que cuando valga 1 devuelva 1....

El problema es que no sé qué debo devolver en el primer if...

Gracias.

Saludos.
  #2 (permalink)  
Antiguo 07/04/2012, 16:44
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: Función recursiva

Te esta devolviendo uno porque 1 / n en entero siempore va a ser 0... tienes que castear la operacion a double.

Código C++:
Ver original
  1. double calculo(int n)
  2. {
  3.     if(n == 1) return 1;
  4.    
  5.     else
  6.     return  (1 / (double) n ) +  calculo(n-1);
  7. }
  #3 (permalink)  
Antiguo 07/04/2012, 16:50
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Función recursiva

¡Muchísimas gracias! Ya he entendido el ejercicio.

Etiquetas: funcion, int, recursiva
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:01.