Unidad II Fundamentos del Análisis de Algoritmos
Unidad II Fundamentos del Análisis de Algoritmos
Unidad II Fundamentos del Análisis de Algoritmos
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Algoritmos</strong> y Estructuras <strong>de</strong> Datos <strong>Unidad</strong> <strong>II</strong> <strong>Fundamentos</strong> <strong><strong>de</strong>l</strong> <strong>Análisis</strong> <strong>de</strong> <strong>Algoritmos</strong><br />
2.3 Recursión<br />
El concepto <strong>de</strong> recursión es fundamental en Matemáticas y Ciencias <strong>de</strong> la Computación. La <strong>de</strong>finición<br />
más simple es que un programa recursivo es aquel que se invoca a sí mismo. 3. La recursión se utiliza<br />
porque permite expresar algoritmos complejos en forma compacta y elegante sin reducir la eficiencia.<br />
Un algoritmo recursivo es aquel que resuelve un problema resolviendo una o más instancias menores<br />
que el mismo problema. Los algoritmos recursivos se implementan con métodos recursivos.<br />
Reglas <strong>de</strong> la recursión<br />
1) Caso base. Siempre <strong>de</strong>be existir casos base que se resuelven sin hacer uso <strong>de</strong> la recursión.<br />
2) Progreso. Cualquier llamada recursiva <strong>de</strong>be progresar hacia un caso base.<br />
3) Diseño. Asumir que toda llamada recursiva interna funciona correctamente.<br />
4) Regla <strong>de</strong> Interés compuesto: Evitar duplicar el trabajo resolviéndo la misma instancia <strong>de</strong> un<br />
problema en llamadas recursivas compuestas.<br />
Ejemplo 1: Cálculo <strong><strong>de</strong>l</strong> n número <strong>de</strong> la serie fibonacci<br />
int fibonacci (int n)<br />
{ if (n