Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: anapamell en 6 Mayo 2013, 19:02 PM

Título: AYUDA problema de RECURSIVIDAD en C++
Publicado por: anapamell en 6 Mayo 2013, 19:02 PM
Hola! tengo un problema con el codigo de un programa en C++ que dice asi:
/*Solicite al usuario un número entero y positivo n (valide). Utilizando una función
recursiva, calcule la suma S de los n primeros términos de la serie: S=1/i desde i=1 hasta i=n*/

y esto fue lo que hice, pero al momento de compilar y ejecutar, me sale "el programa dejo de funcionar" o sea, que hay una falla en algo logico del codigo.. pero no encuentro donde esta esa falla :(


#include <iostream>
#include<stdlib.h>
using namespace std;
float valid ();
float sum (float(n));

int main()
{
    float n,b;
    n=valid();
    cout<<"n="<<n<<endl;
    b=sum(n);
    cout<<"La suma de los n primeros numeros de la serie es: "<<b<<endl;
    system ("pause");
}

float sum(float(n))
{float a,s;
a=1;
if(n==1) return(1);
else
{s=a/n;
return (s+(sum(a/(n-1))));
}}

float valid ()
{float n;
do{cout<<"Introduzca un numero entero y positivo: ";
cin>>n;}
while (n!=int(n)||n<0);
return (float(n));
}
Título: Re: AYUDA problema de RECURSIVIDAD en C++
Publicado por: leosansan en 6 Mayo 2013, 19:26 PM

A ver si nos acostumbramos a indentar el código y al ponerlo en el foro usar las etiquetas GeSHi de C++ para leerlo mejor.

Aquí lo tienes con la corrección. Míralo bien, era una chorrada que a cualquiera se nos pasaría por alto:


Código (cpp) [Seleccionar]

#include <iostream>
#include<stdlib.h>
using namespace std;
float valid ();
float sum (float n);

int main()
{
   int n;
   n=valid();
   cout<<"n="<<n<<endl;
   cout<<"La suma de los "<<n<<" primeros numeros de la serie 1/n es: "<<sum(n)<<endl;
   system ("pause");
   return 0;
}

float sum(float n)
{
   float s;
   if(n==1)
       return(1);
   else
       return 1/n+sum(n-1);
}

float valid ()
{
   float n;
   do{
       cout<<"Introduzca un numero entero y positivo: ";
       cin>>n;
   } while (n!=int(n)||n<0);
   return ((n));
}


Saluditos!... .. (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Título: Re: AYUDA problema de RECURSIVIDAD en C++
Publicado por: anapamell en 6 Mayo 2013, 20:04 PM
 :D aaaa! GRACIAS gracias!!! aahh no sabia como se usaba el Geshi xD muchas gracias!!! :)