• Domingo 15 de Diciembre de 2024, 01:40

Autor Tema:  Ayuda Con Recursividad  (Leído 1729 veces)

Perrero

  • Miembro MUY activo
  • ***
  • Mensajes: 209
    • Ver Perfil
Ayuda Con Recursividad
« en: Sábado 30 de Junio de 2007, 22:07 »
0
Estoy aprendiendo recursicidad y me estoy haciendo bolas al tratar de sumar los elementos de un arreglo recursivamente. Este es el codigo de mi funcion suma

Código: Text
  1.  
  2. int Sumar(int item)  //item es la ultima posicion del arreglo
  3.    {
  4.       if (item==0)
  5.          return (0);
  6.       else
  7.          return (Vec[item] + Vec[Sumar(item-1)]);
  8.    }
  9.  
  10.  

No se que es lo que estoy haciendo mal. Alguien podria indicarme en que estoy fallando?

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Ayuda Con Recursividad
« Respuesta #1 en: Sábado 30 de Junio de 2007, 23:36 »
0
Código: Text
  1. int Sumar(int item)  //item es la ultima posicion del arreglo
  2.   {
  3.      if (item==0)
  4.     return (Vec[0]);
  5.      else
  6.     return ( Vec[item] + Sumar(item-1) );
  7.   }
  8.  
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Perrero

  • Miembro MUY activo
  • ***
  • Mensajes: 209
    • Ver Perfil
Re: Ayuda Con Recursividad
« Respuesta #2 en: Domingo 1 de Julio de 2007, 03:09 »
0
Me sigue sin salir  :( , lo que quiero hacer es sumar de manera recursiva los elementos de un vector, pero me bota un numero muy bajo, por ejemplo 13 cuando deberia ser 60 o 70 y aveces me da error, esa logica esta bien?

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Ayuda Con Recursividad
« Respuesta #3 en: Domingo 1 de Julio de 2007, 03:21 »
0
Si, creería que si. A ver, mostrame el código completo.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Perrero

  • Miembro MUY activo
  • ***
  • Mensajes: 209
    • Ver Perfil
Re: Ayuda Con Recursividad
« Respuesta #4 en: Domingo 1 de Julio de 2007, 03:40 »
0
Bueno, la operacion encargada de sumar la tengo en una clase, es esta:

Código: Text
  1.  
  2.    Suma::Suma()
  3.    {
  4.       items = 0;
  5.    }
  6.    Suma::~Suma()
  7.    {
  8.    }
  9.    void Suma::Generar_Nueros()
  10.    {
  11.       int n;
  12.  
  13.       n = random(20) +5;
  14.       for (int i=0;i<n;i++)
  15.       {
  16.          Vec[i] = random(10) + 1;
  17.          items++;
  18.       }
  19.    }
  20.    int Suma::Sumar(int item)
  21.    {
  22.       if (item==0)
  23.          return (Vec[0]);
  24.       else
  25.          return (Vec[item] + Vec[Sumar(item-1)]);
  26.    }
  27.    AnsiString Suma::Mostrar()
  28.    {
  29.       AnsiString Cadena="";
  30.  
  31.       for (int i=0;i<items;i++)
  32.          Cadena+=(AnsiString)Vec[i]+",";
  33.  
  34.       return (Cadena);
  35.    }
  36.    int Suma::GetItems()
  37.    {
  38.       return (items);
  39.    }
  40.  
  41.  

y hago invocacion a la funcion desde aqui:

Código: Text
  1.  
  2.    suma->Generar_Nueros();
  3.    Edit1->Text = suma->Sumar(suma->GetItems()-1);
  4.    Edit2->Text = suma->Mostrar();
  5.  
  6.  

Bueno, espero que me puedan ayudar, gracias de antemano.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Ayuda Con Recursividad
« Respuesta #5 en: Domingo 1 de Julio de 2007, 04:34 »
0
Prestale especial atención a esta linea
Código: Text
  1. return (Vec[item] + Vec[Sumar(item-1)]);
  2.  
Analizala y fijate como la puse mas arriba, aún no la corregiste.
"Vec[Sumar(item-1)]" Siempre te va a devolver el mismo valor, el de Vec en la posición Sumar(item-1) que puede ser el valor de un elemento de tu vector o no dependiendo del valor que retorne la función.-
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.