ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: tinchow en Agosto 29, 2006, 22:51:39

Título: (c++)recursividad
Publicado por: tinchow en Agosto 29, 2006, 22:51:39
mucachos alguien me puede ayudar. Necesito hacer una funcion recursiva que sume las componentes de un vector y la verdad que el tema me ta re costando. no me pueden dar ideas?

Muchas gracias, martin
Título: Re: (c++)recursividad
Publicado por: Predicador en Agosto 30, 2006, 02:59:21
Hola, si entendes la recursividad vasa  ver que es algo facil; por razones de velocidad (y oxidacion en c) lo voy a hacer en un pseudocodigo:

funcion sumar_vector( a : vector ; cant_elementos : entero) retorna entero
{
 si (cant_elementos = 0) entonces
                      retornar (0)
 sino
                      retornar (vector[0] + sumar_vector(vector sin primer elemento , can_elementos - 1))
}

en c usar todos punteros para los vectores, entonces digamos que no duplicas en arreglo en ningun monento, sino que solo le pasas el puntero, entonces al momento de pasar el vector sin el primer elemento, solo pasa el puntero al segundo elemento, entendible, no?
Baii
Título: Re: (c++)recursividad
Publicado por: tinchow en Agosto 30, 2006, 16:51:25
gracias predi, siempre en todas  vos :up:
che, no tenes algun tutorial o pagina de donde pueda sacar info para aprender el tema, las cosas que tengo no tocan el tema a fondo y no termino de entender como encarar un problema de  caracteristica recursiva.
Título: Re: (c++)recursividad
Publicado por: Predicador en Agosto 31, 2006, 02:44:53
Hola, la primera vez que se toca la recursividad uno siempre esta medio perdido, ya que en si, la recursividad define las cosas en funcion de si misma; por ejemplo la funcion factorial es recursiva, veamos:
- sabemos que n! = n * (n-1) * (n-2) * (n-3) * ... * 1
esto es que n! = n * (n-1)!
por ende se define recursivamente y la funcion se llama a si misma, pero debe haber una condicion de corte (sino se llamaria infinitamente) y esta es que el parametro n sea mayor o igual que 1.
Luego factorial se define facilmente como:
function factorial(n)
{
  if (n <= 1)
    return 1;  // <-- condicion de corte
  else
    return n * factorial(n-1);  <-- calculo de solucion y llamada recursiva
}

Espero que esto te haya ayudado, ya que realmente no recuerdo ningun libro groso que la explique, pero dale gas, lee mucho, el dia que entiendas un caso luego los demas dejaran de tener misterio ;)
Baii.
Título: Re: (c++)recursividad
Publicado por: palmy en Agosto 31, 2006, 10:11:21
predi tiene razon, cuando la entendes te sale al toque, y no hay vuelta atras :P
Título: Re: (c++)recursividad
Publicado por: tinchow en Agosto 31, 2006, 23:56:58
bueno gracias che, en unos dias que me desocupo me pongo a full ;D