AYUDA problema de RECURSIVIDAD en C++

Iniciado por anapamell, 6 Mayo 2013, 19:02 PM

0 Miembros y 1 Visitante están viendo este tema.

anapamell

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));
}

leosansan

#1

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!... ..

anapamell

 :D aaaa! GRACIAS gracias!!! aahh no sabia como se usaba el Geshi xD muchas gracias!!! :)