elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda de principiante sobre recursividad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda de principiante sobre recursividad  (Leído 3,096 veces)
bananakatana

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Duda de principiante sobre recursividad
« 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.


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Duda de principiante sobre recursividad
« Respuesta #1 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
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int autosum(int val,int lim,int valincrement, int aux);
  7.  
  8. int main()
  9. {
  10.    cout << autosum(10,200,10,0);
  11.    cin.get();
  12.    return (1);
  13. }
  14.  
  15. int autosum(int val,int Vallim,int valincrement, int aux)
  16. {   /*
  17.     La recursividad tiene la ventja de reduccion de codigo,
  18.     pero tiene la desventaja que crea copias de la misma
  19.     funcion N cantidad de veces necesarias, por ende es lenta.
  20.     */
  21.    if (val >= Vallim)
  22.    {
  23.        return aux;
  24.    } else {
  25.        return autosum(
  26.                       val + valincrement , //  Incrementamos
  27.                       Vallim ,             //  Valor Limite
  28.                       valincrement ,       //  Valor en incremento
  29.                       aux+1);              //  Contador de vueltas
  30.    }
  31. }
  32.  
  33.  

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


« Última modificación: 13 Diciembre 2010, 01:52 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
negux

Desconectado Desconectado

Mensajes: 63


Ver Perfil
Re: Duda de principiante sobre recursividad
« Respuesta #2 en: 13 Diciembre 2010, 04:04 am »

Tu ejercicio va mas a como evaluar una expresion prefija, se puede hacer utilizando pilas
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda de principiante
PHP
poltron 4 3,170 Último mensaje 20 Febrero 2010, 12:18 pm
por poltron
Duda de Super Principiante « 1 2 3 4 »
Programación C/C++
Allitnam2004 30 12,743 Último mensaje 5 Enero 2011, 22:11 pm
por leogtz
duda con recursividad y listas
Programación C/C++
elbuitre86 8 3,224 Último mensaje 3 Julio 2012, 18:35 pm
por elbuitre86
Duda con recursividad, punteros y parametros por dirección
Programación C/C++
jmrivas 3 2,710 Último mensaje 7 Julio 2014, 17:40 pm
por eferion
[BATCH] Duda sobre recursividad en directorio y permisos de usuarios
Scripting
Aeros 3 3,214 Último mensaje 5 Marzo 2015, 16:00 pm
por Aeros
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines