Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo
Aplicar los conocimientos adquiridos en los temas anteriores al realizar la
conversión de algoritmos recursivos en iterativos usando pilas como listas
lineales con simple enlace; diseñar y desarrollar programas en lenguaje C++para
implementar una versión iterativa de las Torres de Hanoi.
7.2. Introducción
Todo algoritmo recursivo puede ser transformado en otro de tipo iterativo, pero
para ello a veces se necesita utilizar pilas donde almacenar los cálculos parciales
y el estado actual del subprograma recursivo. Es posible estandarizar los pasos
necesarios para convertir un algoritmo recursivo en iterativo, aunque el algoritmo
así obtenido requerirá una posterior labor de optimización.
Procedimiento Iterativo(Parametros)
Inicia Iterativo
Elemento Reg;
Repetir
Si (PrimeraLlamada) Entonces
Caso_Contrario
Inicia SiguientesLlamadas
Retira(Reg);
Inicia InsertarPila
Empuja(Reg);
Bloque de instrucciones modifican las variables de la pila;
Mientras (Primero);
Procedimiento Recursivo(Parametros)
Inicia Recursivo
Si CondicionFilalizar Entonces
Bloque de finalización;
Caso_Contrario
Inicia LlamadaRecursiva
Bloque sentencias;
Recursivo(Argumentos modificados);
Procedimiento Iterativo(Parametros)
Inicia Iterativo
Si CondicionFilalizar Entonces
Bloque de finalización;
Caso_Contrario
Inicia Equivalente
Bloque sentencias;
Inicia FibonacciR
Si X < 2 Entonces
Retornar X;
Caso_Contrario
Inicia FibonacciI
Var
Si X < 2 Entonces
Retornar X;
Caso_Contrario
Inicia Equivalente
Para I = 2 : X Hacer
Inicia Repetitivo
Anterior = Este;
Este = Siguiente;
Retornar Siguiente;
Ejercicio de aplicación
Efectuar el análisis, diseño, implementación en C++ que utilice las librerías
pertinentes para realizar la conversión a una versión iterativa del problema de
las 8 reinas.
Recursos complementarios
Sugerencias para que pueda ampliar la información sobre el tema trabajado,
como parte de un proceso de aprendizaje autónomo
http://www.calcifer.org/documentos/librognome/glib-lists-queues.html
http://virtual.umng.edu.co/distancia/ecosistema/odin/odin_desktop.php?path=Li
4vb3Zhcy9pbmdlbmllcmlhX2luZm9ybWF0aWNhL2VzdHJ1Y3R1cmFfZGVfZGF
0b3MvdW5pZGFkXzMv
http://www.colimbo.net/documentos/documentacion/113/FPII03_Estructuras_lin
eales_de_datos.pdf
https://accedacris.ulpgc.es/bitstream/10553/1542/1/580.pdf
Bibliografía
Meneses Becerra, F. Estructuras de datos en C++.
Autoevaluación
1. Todo algoritmo iterativo puede ser transformado en otro de tipo recursivo
Verdadero
Falso
Todo algoritmo recursivo puede ser transformado en otro de tipo iterativo, pero
para ello a veces se necesita utilizar:
Uso de grafos
Procedimiento Iterativo(Parametros)
Inicia Iterativo
Elemento Reg;
//línea 1
Si (PrimeraLlamada) Entonces
//línea 2
Inicia SiguientesLlamadas
Retira(Reg);
//línea 3
Empuja(Reg);
Mientras (Primero);
Línea 1
Repetir
Línea 2
Caso_Contrario
Linea 3
Inicia InsertarPila
Línea 1
Hacer_Mientras
Línea 2
Si(pila_valida)entonces
Linea 3
Reg->0
Línea 1
Repetir
Línea 2
Si(pila_valida)entonces
Linea 3
Inicia InsertarPila
Línea 1
Repetir
Línea 2
Linea 3
Inicia InsertarPila
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
Programa en C++
// ItemHano.h
#ifndef ITEMHANOI_H
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 1/8
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
#define ITEMHANOI_H
#include <iostream>
#include <stdio.h>
#include<cstdlib>
#include <string.h>
#include <ERROR.HPP>
class Elemento
public:
Elemento() {}
protected:
private:
};
#endif // ITEMHANOI_H
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 2/8
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
// CHanoi.h
#ifndef CHANOI_H
#define CHANOI_H
#include <CLstSEInsel.h>
public:
CHanoi();
{
a = b;
b = aux;
}
protected:
private:
};
#endif // CHANOI_H
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 3/8
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
// CHanoi.cpp
#include "CHanoi.h"
CHanoi::CHanoi()
//ctor
CHanoi::~CHanoi()
//dtor
cout << "Pasar el disco " << n << " desde el poste ";
EscribirPoste(org);
EscribirPoste(dst);
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 4/8
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
void CHanoi::EscribirPoste(int p) {
}
{ // MoverDiscosI
do {
if (PrimLlam) {
PrimLlam = 0;
}
else {
Retira(Reg);
PasarDisco(Reg.Alt,Reg.Org,Reg.Dst);
Reg.Alt--;
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 5/8
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
}
Empuja(Reg);
Reg.Alt--;
}
PasarDisco(Reg.Alt,Reg.Org,Reg.Dst);
}
} // MoverDiscosI
// TorHanoiIterativo
#include "CHanoi.h"
int main()
cout << "Ingresar el numero de discos (salir < 1 o > 10): ";
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 6/8
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
cout << "0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro valor): ";
cout << "0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro valor): ";
cout << "Secuencia de pasos para mover " << n << " discos desde el poste ";
CH.EscribirPoste(origen);
CH.EscribirPoste(destino);
}
return 0;
Resultados de la corrida:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 7/8
21/11/22, 21:07 7.4. Versión iterativa de las Torres de Hanoi | Tema 7: Pilas como listas lineales con simple enlace
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=22923&id_unidad=259709&id_pkg=105477&wAccion=ver_scos#ver_documento 8/8