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

#6 Swin
27/11/2003 - 12:41 | Informe spam
Es cuestión de gustos... yo veo más intuitivo saber que 9! = 9*8!, en lugar
de 9*8*...*1, además de más sencillo.

Dices que solo sirve para casos muy concretos... nada más lejos de la
realidad Casi todos los sistemas gordos en los que he trabajado alguna
vez he usado recursividad. Se me ocurre por ejemplo otra aplicación clara:
un Buscaminas (hace poco me hice uno por hobby). Cuando descubres una celda,
si el número de minas alrededor de la misma es 0, debes descubrir
automáticamente todas las celtas de alrededor; la condición de salida a la
que se refiere Esteban sería que haya alguna mina alrededor, en este caso no
descubre las de alrededor...

Es simplemente un ejemplo, pero te aseguro que en la vida real te encuentras
muchos, y créeme que te ahorras bastante código, memoria y velocidad (¿te
imaginas en un buscaminas codificar el descubrir una celda sin
recursividad???? Prefiero no pensarlo...)

Ejemplo real: cualquier algoritmo matemático usado para aplicaciones
prácticas de Inteligencia Artificial y Aprendizaje Automático, análisis de
coeficientes de cierta señal para su procesado y, por ejemplo, posterior
reconocimiento. Puede que esto te suene a chino, pero por ejemplo (y es una
de las muchas aplicaciones), si llamas por teléfono a cualquier empresa de
servicios y te sale un operador automático (hoy en día él 90%), detrás hay
sistemas muy complejos de este tipo, los cuales en su código interno están
repletos de funciones recursivas...

¿Sigues pensando que es para casos muy específicos?

Un saludo,

Swin.



"Sergio" escribió en el mensaje
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
#7 Sergio
27/11/2003 - 13:59 | Informe spam
Pues bueno, si, si sigo pensando que es para caso muy especificos, que no
quiere decir que no haya gran cantidad de ellos, sino que para toparte con
uno de ellos tiene que ser algo fuera de lo normal, y desde luego yo no
suelo hacer todos los dias un buscaminas o un operador telefónico.
Respuesta Responder a este mensaje
#8 Daní Pinart
27/11/2003 - 15:24 | Informe spam
Buenas,

Supongo que la recursividad tendrá otras aplicaciones,
pero yo la utilizo para recorrer estructuras jerárquicas,
por ejemplo un nodo xml que puede contener múltiples nodos
hijos que as su vez pueden contener múltiples nodos y así
recursivamente. El algoritmo es muy simple, consiste en ir
llamando la misma función recursivamente hasta que se
llega al elemento base. Te pongo un ejemplo.

void PrintNode( CNode* pNode )// la clase CNode no existe,
es un ejemplo
{

while(pNode->Get
}
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
#9 Sergio
27/11/2003 - 17:06 | Informe spam
Me da que se ha quedado a medias el código, solo tengo esto:

void PrintNode( CNode* pNode )// la clase CNode no existe,
es un ejemplo
{

while(pNode->Get
}
Respuesta Responder a este mensaje
#10 Erik E. Copado
27/11/2003 - 21:59 | Informe spam
Hola Sergio,

Por ejemplo en el explorador de windows cuando expandes una carpeta se
utiliza la recurcividad

esto es

Carptea1
|_Subcarpeta
|_Subcarpeta2
|_Sub-Subcarpeta1

Esto es una recursividad por que empiezas en carpeta1, despues la vuelves a
llamar la funcion Carpeta y encuentra Subcarpeta, Finaliza la Segunda
recursividad, y encuntra una tercera carperta (Subcarpeta2) y vuleve a
llamarse a ella misma y encuentra sub-subcaprtea1

Finaliza el Arbol y se van finalizando todas las funciones que se abrieron.


Espero haberme explicado correctamente,


Saludos,


From: "Sergio"
Newsgroups: microsoft.public.es.vc
Sent: Thursday, November 27, 2003 3:32 AM
Subject: Recursividad


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






"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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida