Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Consulta - Recursividad e iteracion
Autor Mensaje
rihardmarius Sin conexión
Secretario de la SAE
Por qué no me derivas el loga...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 415
Agradecimientos dados: 100
Agradecimientos: 378 en 66 posts
Registro en: Oct 2011
Mensaje: #1
Consulta - Recursividad e iteracion Dudas y recomendaciones Algoritmos y Estructuras de Datos
Ayer en un parcial, en un V o F, habia un punto que decia:

"La recursividad es una forma de implementar la iteracion"

Yo puse F, porque la iteracion es una estructura de control basica y la recursividad es una capacidad de las funciones de ser llamadas a si mismas, por lo que en esencia son cosas muy distintas.

El flaco me puso mal, supuestamente era verdadera. Para mi ya de entrada el punto era medio ambiguo, pero bueno.

Me gustaria saber que opinan ustedes.

Gracias.

29-11-2013 21:43
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dios Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.051
Agradecimientos dados: 33
Agradecimientos: 142 en 122 posts
Registro en: Dec 2011
Mensaje: #2
Re: Consulta - Recursividad e iteracion
Si aplicás la misma función varias veces estás iterando te guste o no.

«(…)Se arman paquetes… ¿eh?… tecnológicos… tecnológicos portes de… en donde están… este… interrelacionados con las otras capas.(…)»
29-11-2013 23:09
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
fnliendomolina Sin conexión
Campeon del cubo Rubik
Mutig zu sein
****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 122
Agradecimientos dados: 90
Agradecimientos: 26 en 20 posts
Registro en: Apr 2012
Facebook
Mensaje: #3
RE: Consulta - Recursividad e iteracion
Tal cual! Si bien la implementacion de una cosa y otra sea algo totalmente distinto (uno es una estructura de control: while, for... y la otra es llamar a una función a si misma) en si, a simple vista, parecen 2 cosas distintas pero en el fondo hacen lo mismo. Es como dicen arriba, cuando haces recursividad estas iterando tantas veces como se pueda, un ciclo while se hace tantas veces se pueda, todo dependiendo de las condiciones. La verdad muy engañoso ese V o F...
29-11-2013 23:29
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Baron Bomadil Sin conexión
Militante
We are out of coffee
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 85
Agradecimientos dados: 17
Agradecimientos: 8 en 8 posts
Registro en: Jul 2013
Mensaje: #4
RE: Consulta - Recursividad e iteracion
Tanto los ciclos como la recursividad son diferentes implementaciones de una iteración, por ejemplo en Haskell que es un lenguaje funcional no tiene ciclos while ni for, por lo tanto se aplica recursividad para iterar.
29-11-2013 23:33
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rihardmarius Sin conexión
Secretario de la SAE
Por qué no me derivas el loga...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 415
Agradecimientos dados: 100
Agradecimientos: 378 en 66 posts
Registro en: Oct 2011
Mensaje: #5
RE: Consulta - Recursividad e iteracion
(29-11-2013 23:33)Baron Bomadil escribió:  Tanto los ciclos como la recursividad son diferentes implementaciones de una iteración, por ejemplo en Haskell que es un lenguaje funcional no tiene ciclos while ni for, por lo tanto se aplica recursividad para iterar.

en serio? no tienen while? ni me quiero imaginar programar en esa cosa

30-11-2013 01:55
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 287
Agradecimientos dados: 300
Agradecimientos: 54 en 31 posts
Registro en: Aug 2012
Mensaje: #6
Re: RE: Consulta - Recursividad e iteracion
(29-11-2013 23:33)Baron Bomadil escribió:  Tanto los ciclos como la recursividad son diferentes implementaciones de una iteración, por ejemplo en Haskell que es un lenguaje funcional no tiene ciclos while ni for, por lo tanto se aplica recursividad para iterar.

En realidad no existen dichos ciclos como tales, sino mas bien aparecen de forma implicita en ciertos metodos/funciones, es decir en sus implementaciones.
30-11-2013 04:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dios Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.051
Agradecimientos dados: 33
Agradecimientos: 142 en 122 posts
Registro en: Dec 2011
Mensaje: #7
RE: Consulta - Recursividad e iteracion
(30-11-2013 01:55)rihardmarius escribió:  en serio? no tienen while? ni me quiero imaginar programar en esa cosa

Lo vas a tener que hacer en Paradigmas de programación. Para el paradigma funcional se usa Haskell, y Haskell no usa estructuras de control como los lenguajes imperativos. Se usan mucho (MUCHO) las funciones recursivas, composición de funciones, aplicación parcial de funciones, etc.

«(…)Se arman paquetes… ¿eh?… tecnológicos… tecnológicos portes de… en donde están… este… interrelacionados con las otras capas.(…)»
30-11-2013 10:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.272
Agradecimientos dados: 149
Agradecimientos: 246 en 158 posts
Registro en: Jun 2008
Mensaje: #8
RE: Consulta - Recursividad e iteracion
El gran problema es que en Algoritmos todavía estás a años luz de poder creer que una función puede manejarse como si fuera un dato.

Te voy a pedir un acto de fe: creeme que podrías tener una variable "de tipo función". Es decir, bajo determinadas circunstancias, podrías hacer algo como lo que escribo abajo, en un lenguaje que no existe (la sintaxis no es la de ningún lenguaje que conozca), pero que no dista mucho de una implementación real:



function siguiente(x) {
return x + 1;
}

function anterior(x) {
return x - 1;
}

function main() {
tipo_funcion algunaFuncion; // declaro una variable de tipo función
algunaFuncion = siguiente; // le asigno a esa variable la función siguiente
print algunaFuncion(2); // imprimo el resultado de llamar a la función que "guardé" en algunaFuncion con el parámetro 2
// osea, imprime "3"

algunaFuncion = anterior; // ahora algunaFuncion pasa a representar a la funcion "anterior"
print algunaFuncion(2); // ahora imprime 1 - porque la que se ejecuta es anterior(2), y ya no siguiente(2)
}




Otra vez: este lenguaje NO existe, pero en los lenguajes "reales" sería MUUUUY parecido el código final (la implementación en C es muy muy parecida).


Si me creés todo esto (vas a aprenderlo en Paradigmas, en su momento), podríamos definir una función for que reciba como parámetro un número y una función: el número va a ser la cantidad de veces que queremos que se ejecute la función. Por ejemplo:



function for(cantidad, funcion) {
if(cantidad > 0) { // tengo que ejecutar "cantidad" veces
for(cantidad - 1, funcion); // ejecuto recursivamente for, con cantidad decrementado
// entonces, en algún momento, de tanto decrementar cantidad va a ser 0, y el if de
// la línea anterior va a cortar. Hasta que eso pase, sigo llamando recursivamente

funcion(cantidad); // una vez que salí del for, ejecuto la función pasándole cantidad
// como parámetro
}
}

function imprimir(x) {
print x; // imprimo el parametro
}

function imprimirSiguiente(x) {
print x + 1;
}

function main() {
tipo_funcion unaFuncion;
unaFuncion = imprimir;
for(20, unaFuncion); // imprime el 1, el 2, el 3, etc, hasta imprimir el 20

unaFuncion = imprimirSiguiente;
for(20, unaFuncion); // imprime el 2, el 3, el 4, etc, hasta imprimir el 21
}





Mi for está hardcodeadísimo (solo funciona generando rangos desde 1 hasta el límite), pero es una "prueba de concepto". Podríamos hacer un for que reciba 4 funciones: estadoInicial, condicionDeCorte, postIncremento y cuerpoDelCiclo (la que veníamos llamando "funcion"), y haciendo algo MUY parecido a esto podríamos implementar "el for de C" recursivamente.


De hecho, en Paradigmas vas a ver otro lenguaje *hermoso* llamado Smalltalk en el que el for es "una función", el if es otra, y "todo excepto las asignaciones" son "funciones" (se usa otra terminología y blah, pero de momento quedate con eso).


Tiempo al tiempo, che =)

PD: quizás hoy no entiendas nada, quizás sí, no lo se. Pero este "apunte" puede servirte para leer algo sobre todo el chamuyo que te tiré =) http://uqbar-wiki.org/index.php?title=Orden_Superior

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
(Este mensaje fue modificado por última vez en: 02-12-2013 23:47 por Desert69.)
02-12-2013 23:43
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.