(c++)recursividad

Publicado por tinchow, Agosto 29, 2006, 22:51:39

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

tinchow

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

Predicador

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
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

tinchow

#2
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.

Predicador

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.
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

palmy

predi tiene razon, cuando la entendes te sale al toque, y no hay vuelta atras :P
Patagonia ReVelde | www.patagoniarevelde.com.ar

tinchow

bueno gracias che, en unos dias que me desocupo me pongo a full ;D