Necesito hacer el calculo de una integral de forma recursiva en C++, ya lo hice de forma iterativa pero me gustaría hacerlo de forma recursiva ahora. ¿Alguien que me pueda ayudar?
int main(int argc, const char * argv[]) {
float xd;
float xh;
int i;
float sum = 0.0;
int n;
printf("Ingrese numero de Intervalos: ");
scanf("%d",&n);
for (i=0; i<n; i++) {
xd= 1.0*i/n;
xh= 1.0*(i+1)/n;
sum=sum+((pow(3,sqrt(5*xd+7))/sqrt(xd+7))+(pow(3,sqrt(5*xh+7))/sqrt(xh+7)))/2;
}
printf("El valor de la suma es %.2f.\n",sum);
return 0;
}
Esa es la iterativa.
Tendrias que tener una funcion que reciva como parametro el numero de invervalos y que cuando se llame a si misma valla decrementando el numero y termine cuando sea cero.
Para este tipo de problemas hacerlo de una forma recursiva es muy ineficiente, desde el punto de vista de la memoria y variables a usar.
Pero si lo haces por motivos didacticos esta bien.
La plantilla seria la siguiente:
float funcion(int intervalos, ... /*Otras variables*/){
//variables para la suma
//
if(intervalos > 1) {
return funcion(intervalos-1, ... /*Otras variables*/);
}
else{
return X;// Donde X tiene el total de la operacion;
}
}