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

[SOLUCIONADO] Suma Recursiva

Estas en el tema de Suma Recursiva en el foro de C/C++ en Foros del Web. Hola Amigos En un Programa Me pidieron Realizar La suma De los Numeros Que Se encuentres En el Rango de un numero A hasta B ...
  #1 (permalink)  
Antiguo 10/05/2016, 09:23
 
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Exclamación Suma Recursiva

Hola Amigos En un Programa Me pidieron Realizar La suma De los Numeros Que Se encuentres En el Rango de un numero A hasta B
Por Ejem.
Que ingrese Dos Numeros Que seran A y B

4 8
sumar los numeros que se encuentran en ese rango.
que seria
4+5+6+7+8 =30
y esta suma debe ser de forma recursiva.

El Problema principal que tengo es que mi programa me muestra todas las sumas que se realizan.

4+5+6+7+8
de esta manera.
4 9 15 22 30

y solo nesecito mostrar el ultimo resultado que en este caso seria 30.

Este Es Mi codigo.
Como Puedo Solucionarlo. Ayuda...!!!
Código:
#include <iostream>
#include <conio.h>
using namespace std;
void contador(int a,int b,int c,int s) {
if (c==b){
	cout<<c;
}

else
{
	if(a>=b){
		s+=a;
		cout<<a<<" ";
		contador(a-1,b,c,s);
		cout<<"Salida : "<<s<<endl;
      }
      }
}

void contador1(int c,int d,int e,int x) {
	if(d==e){
		cout<<d;
	}
	if(c<=d){
		x+=c;
	    cout<<c<<" ";
	    contador1(c+1,d,e,x);
	    cout<<" "<<endl;
	    cout<<"Salida : "<<x<<endl;
	    		  }
}

int main() {
      int num1;
      int num2;
            cout<<"Escriba un numero"<<endl;
            cin>>num1;
            cout<<"Escriba Otro numero"<<endl;
            cin>>num2;
            if(num1>=num2){
            cout<<"Entrada"<<endl;
            cout<<num1<<" "<<num2<<endl;
            cout<<""<<endl;
            contador(num1,num2,num1,0);
            }
            else{
            cout<<"Entrada"<<endl;
            cout<<num1<<" "<<num2<<endl;
            cout<<""<<endl;
            contador1(num1,num2,num1,0);
            }
      getch();
}
  #2 (permalink)  
Antiguo 10/05/2016, 09:51
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Suma Recursiva

Tienes opciones para elegir. Lo importante a la hora de tirar por recursividad es tener claro qué se ha de ejecutar en cada iteración... bueno, realmente esto es importante en cualquier caso :)

1. La función lleva la cuenta de la suma y al final imprime el resultado... mientras tanto va acumulando números al total y a la consola:

Código C++:
Ver original
  1. void contador(int actual, int fin, int suma)
  2. {
  3.   std::cout << actual;
  4.   suma += actual;
  5.  
  6.   if( actual != fin )
  7.   {
  8.     std::cout << "+";
  9.     contador(actual+1,fin,suma);
  10.   }
  11.   else
  12.   {
  13.     std::cout << "=" << suma;
  14.   }
  15. }
  16.  
  17. int main()
  18. {
  19.   contador(4,8,0);
  20. }

2. La función recursiva retorna parciales y es la primera función la que tiene el resultado final:

Código C++:
Ver original
  1. int contador1(int actual, int fin)
  2. {
  3.   int parcial = actual;
  4.   std::cout << actual;
  5.  
  6.   if( actual != fin )
  7.   {
  8.     std::cout << "+";
  9.     parcial += contador1(actual+1,fin);
  10.   }
  11.  
  12.   return parcial;
  13. }
  14.  
  15. void contador(int actual, int fin)
  16. {
  17.   int total = contador1(actual,fin);
  18.   std::cout << "=" << total;
  19. }
  20.  
  21. int main()
  22. {
  23.   contador(4,8);
  24. }

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: recursiva, sumatoria
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 18:02.