Recursividad

27/11/2003 - 10:32 por Sergio | Informe spam
Buenas, me ha surgido una duda digamos existencial, como se hace una funcion
recursiva?
Hace mucho que no programo ninguna funcion recursiva, y me ha entrado la
duda de como eran, y de su utilidad.
Si alguien me orientara, le estaría agradecido, pero tampoco es una duda
existencial, aunque lo que mas me interesa es su utilidad, porque desde que
las estudié las he usado un par de veces.
Gracias

Preguntas similare

Leer las respuestas

#1 Swin
27/11/2003 - 10:56 | Informe spam
Pues llamándola a sí mismo desde dentro... es sencillo...

Swin


"Sergio" escribió en el mensaje
news:
Buenas, me ha surgido una duda digamos existencial, como se hace una


funcion
recursiva?
Hace mucho que no programo ninguna funcion recursiva, y me ha entrado la
duda de como eran, y de su utilidad.
Si alguien me orientara, le estaría agradecido, pero tampoco es una duda
existencial, aunque lo que mas me interesa es su utilidad, porque desde


que
las estudié las he usado un par de veces.
Gracias


Respuesta Responder a este mensaje
#2 Esteban
27/11/2003 - 11:12 | Informe spam
La recursividad es una forma muy potente y poco visible de resolver
problemas computacionales, como bien dice el compañero
Swim la manera de funcionar es llamandose a si misma hasta que se de una
condición de salida. Sería como un for hasta que ocurra algo,
pero lo bonito es que esa condición de salida está siendo modificada por la
misma recursividad en cada paso. Se van como anidando las operaciones
y al final cuando se llega a la condición de salida "saltan" todas las
operaciones.

Un ejemplo sencillo que se me ocurre ahora sería la de usar la recursividad
para realizar el factorial de un número. Lo que haces es una función
que multiplique en un acumulador el número que se le pasa hasta que llegue a
uno que será la condición de salida.

int funcion factorial (int numero)
{
int resultado;
si (numero != 1)
{
resultado = numero * factorial (numero-1);
return resultado;
}
sino
{
return 1;
}
}

Espero que te ayude a recordar ;-)

Salu2.
Esteban.

"Swin" escribió en el mensaje
news:
Pues llamándola a sí mismo desde dentro... es sencillo...

Swin


"Sergio" escribió en el mensaje
news:
> Buenas, me ha surgido una duda digamos existencial, como se hace una
funcion
> recursiva?
> Hace mucho que no programo ninguna funcion recursiva, y me ha entrado la
> duda de como eran, y de su utilidad.
> Si alguien me orientara, le estaría agradecido, pero tampoco es una duda
> existencial, aunque lo que mas me interesa es su utilidad, porque desde
que
> las estudié las he usado un par de veces.
> Gracias
>
>


Respuesta Responder a este mensaje
#3 Esteban
27/11/2003 - 11:46 | Informe spam
Me corrigo lo del acumulador no es valido, simplemente se van retornando los
resultados de cada factorial lo otro sería para un for o un while.
Esteban.

"Esteban" escribió en el mensaje
news:

La recursividad es una forma muy potente y poco visible de resolver
problemas computacionales, como bien dice el compañero
Swim la manera de funcionar es llamandose a si misma hasta que se de una
condición de salida. Sería como un for hasta que ocurra algo,
pero lo bonito es que esa condición de salida está siendo modificada por


la
misma recursividad en cada paso. Se van como anidando las operaciones
y al final cuando se llega a la condición de salida "saltan" todas las
operaciones.

Un ejemplo sencillo que se me ocurre ahora sería la de usar la


recursividad
para realizar el factorial de un número. Lo que haces es una función
que multiplique en un acumulador el número que se le pasa hasta que llegue


a
uno que será la condición de salida.

int funcion factorial (int numero)
{
int resultado;
si (numero != 1)
{
resultado = numero * factorial (numero-1);
return resultado;
}
sino
{
return 1;
}
}

Espero que te ayude a recordar ;-)

Salu2.
Esteban.

"Swin" escribió en el mensaje
news:
> Pues llamándola a sí mismo desde dentro... es sencillo...
>
> Swin
>
>
> "Sergio" escribió en el mensaje
> news:
> > Buenas, me ha surgido una duda digamos existencial, como se hace una
> funcion
> > recursiva?
> > Hace mucho que no programo ninguna funcion recursiva, y me ha entrado


la
> > duda de como eran, y de su utilidad.
> > Si alguien me orientara, le estaría agradecido, pero tampoco es una


duda
> > existencial, aunque lo que mas me interesa es su utilidad, porque


desde
> que
> > las estudié las he usado un par de veces.
> > Gracias
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Sergio
27/11/2003 - 11:57 | Informe spam
Pues muchas gracias, tenia una ligera noción pero no estaba muy seguro,
aunque todavía no veo su utilidad, quiero decir, son un tipo de función para
casos tan especificos que, creo, al final en vez de usar la recursividad
usamos otros metodos, como me pasa a mi, que para hacer la función factorial
haría lo siguiente:

int factorial (int numero)
{
int resultado = 1;
for (;numero < 0;numero--) {
resultado *= numero;
}
return resultado;
}

y lo haría así simplemente porque no tengo la costumbre de usar la
recursividad.
Ahora me surge también otra duda, cual sería mas efectiva en cuestion de
memoria y tiempo de procesador? mi función o la recursiva? porque?
Respuesta Responder a este mensaje
#5 jose
27/11/2003 - 12:19 | Informe spam
Hola Sergio,

La recursividad es muy útil. Quizá aún no hayas encontrado un "problema"
en el que utilzarla. Prueba a recorrer o listar todos los nodos de un
árbol. Veras que la única forma sencilla de hacerlo es con una función
recursiva.

En cuanto a la eficiencia, la solución iterativa (con un bucle) es más
eficiente que la recursiva. El motivo es que al realizar una llamada a
una función se tiene que almacenar en la pila los parámetros de la
llamada, el resultado, la dirección de retorno... mientras que en el
bucle estas operaciones no se realizan.

Un saludo,

Jose

"Sergio" wrote in
news::

Pues muchas gracias, tenia una ligera noción pero no estaba muy
seguro, aunque todavía no veo su utilidad, quiero decir, son un tipo
de función para casos tan especificos que, creo, al final en vez de
usar la recursividad usamos otros metodos, como me pasa a mi, que para
hacer la función factorial haría lo siguiente:

int factorial (int numero)
{
int resultado = 1;
for (;numero < 0;numero--) {
resultado *= numero;
}
return resultado;
}

y lo haría así simplemente porque no tengo la costumbre de usar la
recursividad.
Ahora me surge también otra duda, cual sería mas efectiva en cuestion
de memoria y tiempo de procesador? mi función o la recursiva? porque?



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida