Foro de elhacker.net

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
  1. #include <iostream>
  2. #include<stdlib.h>
  3. using namespace std;
  4. float valid ();
  5. float sum (float n);
  6.  
  7. int main()
  8. {
  9.    int n;
  10.    n=valid();
  11.    cout<<"n="<<n<<endl;
  12.    cout<<"La suma de los "<<n<<" primeros numeros de la serie 1/n es: "<<sum(n)<<endl;
  13.    system ("pause");
  14.    return 0;
  15. }
  16.  
  17. float sum(float n)
  18. {
  19.    float s;
  20.    if(n==1)
  21.        return(1);
  22.    else
  23.        return 1/n+sum(n-1);
  24. }
  25.  
  26. float valid ()
  27. {
  28.    float n;
  29.    do{
  30.        cout<<"Introduzca un numero entero y positivo: ";
  31.        cin>>n;
  32.    } while (n!=int(n)||n<0);
  33.    return ((n));
  34. }
  35.  

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!!! :)