Iteración vs Recursión
Enviado por Helena • 1 de Diciembre de 2018 • 1.115 Palabras (5 Páginas) • 277 Visitas
...
- Computadora DELL
- Intel® Core™ i5-3210M CPU @ 2.50GHz.
- Memoria Instalada (RAM): 6,00 GB (5.87 GB utilizables).
- Sistema operativo, Windows 10 Home edition.
- Sistema operativo de 64 bits, procesador x64.
- Netbeans IDE 8.1.
- Java, como lenguaje de programación para la investigación.
Proceso:
Para empezar el experimento de la investigación, se utilizó el lenguaje de programación Java, dentro del IDE, Netbeans. Se escribió 2 funciones para resolver el Factorial de un número, siendo uno de manera recursiva y la otra de manera Iterativa. Utilizando el método de System.nanoTime(); obtenía el tiempo de la computadora en nano segundos, y así obtenía el tiempo de ejecución de cada función, para saber cual era más eficiente.
- Se escogió el IDE Netbeans para realizar el experimento dentro del lenguaje Java.[pic 4][pic 5]
- Se creó un nuevo proyecto utilizando Java como lenguaje de programación.
[pic 6]
Ilustración 3. Creación del nuevo proyecto.
- Se escribió la función recursiva del factorial y la función iterativa del mismo factorial.
[pic 7]
Ilustración 4. Función factorial, recursiva e Iterativa
- Dentro del main del programa, se llamaban las funciones, y utilizando el System.nanoTime(); para obtener el tiempo inicial y el tiempo final, luego se restaban ambos tiempos y la diferencia de ellos era el tiempo de ejecución del programa.
[pic 8]
Ilustración 5. Main del programa
Resultados
En la siguiente gráfica se puede observar el tiempo de ejecución en nano segundos de cada algoritmo:
[pic 9]
Factorial
Iterativo
Recursivo
5
195002
300919
10
174065
181865
15
184739
179401
20
170370
188844
Durante las pruebas se pudo notar que el algoritmo iterativo es levemente más eficiente que el algoritmo recursivo del factorial.
---------------------------------------------------------------
Bibliografía
Delphin, J. (s.f.). webdelprofesor. Recuperado el 10 de 02 de 2017, de http://webdelprofesor.ula.ve/nucleotrujillo/jalejandro/Prog2/Unidad3.pdf
ProgrammerInterview.com. (s.f.). ProgrammerInterview.com. Recuperado el 10 de 02 de 2017, de http://www.programmerinterview.com/index.php/recursion/explanation-of-recursion/
Wikipedia. (s.f.). Wikipedia. Recuperado el 10 de 02 de 2017, de https://es.wikipedia.org/wiki/Iteraci%C3%B3n
Conclusión
El uso de un algoritmo recursivo es más consistente que un algoritmo iterativo, ya que dentro de un algoritmo recursivo solo hay una condición por cumplir, y en el caso del iterativo no, pero el uso de un algoritmo recursivo presenta varias desventajas; Un algoritmo recursivo resuelve el programa haciendo un llamado a sí mismo, pero eso involucra tiempo y memoria, ya que debe de utilizar mucha memoria de la pila de datos para poder encontrar la solución al problema, por lo tanto la recursiva no es útil para la resolución de problemas sencillos, como la sumatoria de un número, o encontrar el factorial de un número, y además que por el mayor uso de memoria de la pila de datos, la recursividad tiene un problema mayor que es denominado como: “Stack Overflow”, y eso hace que el programa “muera”, mientras que en un algoritmo iterativo no sucedería esto tan fácilmente.
Por lo tanto, la conclusión final de la investigación, es que hay que considerar el problema antes de implementar uno de los dos, porque puede que la solución iterativa o recursiva al problema no sea la más eficiente.
...