Título: Duda de principiante sobre recursividad Publicado por: bananakatana en 12 Diciembre 2010, 19:16 pm Hola a todos. Tengo que hacer un ejercicio que utilice una función recursiva en C++, pero no tengo la más mínima idea de cómo encarar el programa. El programa tiene que hacer operaciones matemáticas básicas (sumas, restas y multiplicaciones, nada más) utilizando el siguiente formato:
Por el canal de entrada: + 4 3 Entonces, se debería hacer la operación "4+3" y debería devolver 8. Si ponemos: * 8 + 4 3 La operación es "8*(4+3)" y su solución es 56. Otro ejemplo: * - 2 8 + 4 3 Sería "(2-8)*(4+3)" y el resultado sería -42. No sé ni cómo comenzar, he pensado en utilizar una función tal que así: #include <iostream> using namespace std; int operacion(bool suma, bool resta, bool mult) { int resul; char op; if (cin >> op) { if (op == '+') suma = true; else if (op == '-') resta = true; else if (op == '*') mult = true; else { if (suma) resul = op - '0' + operacion(suma, resta, mult); if (suma) resul = op - '0' - operacion(suma, resta, mult); if (mult) resul = op - '0' * operacion(suma, resta, mult); } } else return 0; } Evidentemente no funciona, ni de cerca. Primero, no sé dónde inicializar "resul", ni tampoco sé cómo desarrollar las operaciones del tipo "* -" como el de "* - 2 8 + 4 3", ni cómo tratar las restas... En fin, que no tengo ni p**a idea. Una cosa, no tengo permitida la utilización de vectores (por supuesto tampoco strings), ni structs. Un saludo y gracias de antemano. Título: Re: Duda de principiante sobre recursividad Publicado por: BlackZeroX en 13 Diciembre 2010, 01:50 am .
Lee algo sobre Stack o pila para que comprendas como funciona la reursividad1¡. En si sobre el Stack/Pila es que el ultim se coloca ensima del ultimo y el ultimo es el que sale primero siendo el primero que se agrego siendo el ultimo, de forma mas practicas es como poner en una mesa una torre de libros, dichos libros ensima de otros y por obvias razones el primero que agregaste sera el ultimo en retirar de la columna de libros pero el ultimo que agregaste es el primero en salir. Ejemplo Basico de Recursividad. Código
Nota: Si vas manejar Strings o Arrays de caracteres que es lo logico deberas usar punteros para que la misma no se dupplique de forma innecesaria en la memoria. Dulces Lunas!¡. Título: Re: Duda de principiante sobre recursividad Publicado por: negux en 13 Diciembre 2010, 04:04 am Tu ejercicio va mas a como evaluar una expresion prefija, se puede hacer utilizando pilas
|