Universidad de Costa Rica
|
|
|
|
|
Tome como base el artículo sobre la
recursividad mencionado
abajo y úselo para explicar qué hacen los programas
EnPile.cpp y Numeral.cpp. Documente y
ejecute esos programas, y arréglelos si es necesario.
Hágales la documentación usando
Doxygen.
Documente su experiencia.
// Numeral.cpp (C) 2006 adolfo@di-mare.com
#include <iostream>
void Numeral(long n) {
long i = 1;
bool esta = false;
while ( (!esta) && (i < n / 2)) {
++i;
esta = (n % i == 0);
}
if (esta) {
cout << i << endl;
Numeral(n / i);
}
}
int main() {
int N;
N = 512; cout << "==>" << endl; Numeral(N);
N = 10000; cout << "==>" << endl; Numeral(N);
N = 420; cout << "==>" << endl; Numeral(N);
return 0;
}
// EOF: Numeral.cpp
|
http://www.di-mare.com/adolfo/p/recurse1.htm
// EnPile.cpp (C) 2005 adolfo@di-mare.com
/** \file EnPile.cpp
\brief Un ejemplo interesante de recursividad
\author Adolfo Di Mare <adolfo@di-mare.com>
\date 2005
\remark Di Mare, Adolfo:
- "Tres formas diferentes de explicar la recursividad"
- Revista Ingeniería, Facultad de Ingeniería,
Universidad de Costa Rica,
Volumen 6, Número 2, pp [31-44], 1996.
- http://www.di-mare.com/adolfo/p/recurse1.htm#otros
*/
#include <iostream>
/** Invierte una hilera de letras que lee de \c "cin"
\code
C:\TMP>EnPile
Digite la hilera a invertir:
adolfo.
.ofloda
\endcode
*/
void EnPile() {
char ch; // variable local ==> 1 nueva en cada invocación
cin >> ch; // lee otra letra
if (ch != '.') {
EnPile();
}
cout << ch;
}
/** No invierte una hilera de letras que lee de \c "cin"
\code
C:\TMP>EnPile
Digite la hilera a invertir:
adolfo.
.......
\endcode
*/
void EnPile(char & ch) {
cin >> ch; // lee otra letra
cout << ch; // la graba
if (ch != '.') {
EnPile(ch);
}
cout << ch;
}
int main() {
char ch;
EnPile();
EnPile(ch);
return 0;
}
// EOF: EnPile.cpp
|
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
| Tiempo de entrega: | 1 semana | |
| Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|
|
|