Sei sulla pagina 1di 5

MINISTERIO DE EDUCACIÓN

ESTADO PLURINACIONAL DE BOLIVIA

INSTITUTO TECNOLÓGICO SUPERIOR


“LIBERTADOR SIMÓN BOLÍVAR”
FUNDADO EL 4 DE JUNIO DE 1984
R.M. 873/83 - R.M. 0636/2016

TEXTO GUÍA
PRO – 300 PROGRAMACIÓN II

Docente: MSc. Ing Hugo Adrian Quispe Bolivar

Uncia- Bolivia

2019
1. ESTRUCTURAS RECURSIVAS
1.1. Algoritmo recursivo
Definición: Es una Técnica que permite que una función se llame a sí misma.

Figura 1: Algoritmo recursivo

Utilidad: Como técnica potente de programación sirve para resolver, mediante soluciones
simples y claras, problemas de gran complejidad.
Ejemplo 1:
Suma de los números del 1, 2 y 3.
Con bucle for Con función recursiva
#include<iostream> #include<iostream>
using namespace std; using namespace std;

int main() int suma(int li)


{ {
int i,suma; if(li<=3)
suma=0; {
for(i=1;i<=3;i++) return (li+suma(li+1) );
{ }
suma=suma+i; else
} {
cout << suma; return 0;
return 0; }
} }

int main()
{
int s;
s=suma(1);
cout << s;
return 0;
}
Salida: 6 Salida: 6
Explicación del ejemplo:
Con respecto a la función recursiva se sigue los siguientes pasos:
1. Se ingresa a la función main donde se declara una variable s para almacenar la suma
de los números del 1 al 5.
int s;
2. Se convoca a la función suma pasándole un parámetro de valor 1, dicho parámetro es
el límite inferior de los números a sumar.
s=suma(1);
3. Se ingresa a la función suma donde se encuentra una condición, si la condición li<=5
es cierta se ejecuta return (li+suma(li+1) ); y si es falso se ejecuta return 0;
En este caso se cumple la condición, ya que li tiene un valor de 1, 1<= 3 es verdadero.
Dentro del if se ejecuta return (li+suma(li+1) ); , lo cual indica que se retorna
li+suma(li+1) hacia la función main.
4. En la función main , s se carga de la siguiente manera:
s = 1 + suma(1+1);
5. Como puede observarse nuevamente tiene que llamarse a la función suma, pero con
la diferencia del parámetro que se le pasa, en este caso es 1+1=2, suma(2). En el caso
de 1 queda almacenada en s.
6. Nuevamente se convoca a la función suma pasándole un parámetro de valor 2.
7. Se ingresa a la función suma, como la condición se sigue cumpliendo 2<= 3, por lo que
se retorna a la función main 2+suma(2+1).
8. En la función main , s se actualiza y se carga de la siguiente manera:
s = 1 + suma(1+1); (Anterior)
s = 1 + 2+suma(2+1); (Actual)
9. Como puede observarse nuevamente tiene que llamarse a la función suma, pero con
la diferencia del parámetro que se le pasa, en este caso es 2+1=3, suma(3). En el caso
de 2 queda almacenada en s.
10. Nuevamente se convoca a la función suma pasándole un parámetro de valor 3.
11. Se ingresa a la función suma, como la condición se sigue cumpliendo 3<= 3, por lo que se
retorna a la función main 3+suma(3+1).
12. En la función main , s se actualiza y se carga de la siguiente manera:
s = 1 + suma(1+1); (Anterior)
s = 1 + 2+ suma(2+1); (Anterior)
s = 1 + 2+ 3+suma(3+1) (Actual)
13. Como puede observarse nuevamente tiene que llamarse a la función suma, pero con
la diferencia del parámetro que se le pasa, en este caso es 3+1=4, suma(4). En el caso
de 3 queda almacenada en s.
14. Nuevamente se convoca a la función suma pasándole un parámetro de valor 4.
15. Se ingresa a la función suma, como la condición no se cumple cumple 4<= 3, por lo que se
retorna a la función main retornando un 0.
16. En la función main , s se actualiza y se carga de la siguiente manera:
s = 1 + suma(1+1); (Anterior)
s = 1 + 2+ suma(2+1); (Anterior)
s = 1 + 2+ 3+suma(3+1) (Anterior)
s = 1 + 2+ 3+0 (Actual)
17. En la función main, finalmente ya no se llama a la función suma, por lo que el
resultado de s = 6.
18. Finalmente en la función main se ejecuta las últimas líneas de código.
cout << s;
return 0;

Ejemplo 2:
Multiplicación de los números del 1, 2, 3 y 4.
Con bucle for Con función recursiva
#include<iostream> #include<iostream>
using namespace std; using namespace std;

int main() int producto(int li)


{ {
int i,p; if(li<=4)
p=1; {
for(i=1;i<=4;i++) return (li*producto(li+1) );
{ }
p=p*i; else
} {
cout << p; return 1;
return 0; }
} }

int main()
{
int p;
p=producto(1);
cout << p;
return 0;
}
Salida: 24 Salida: 24

1.2. Condiciones de la recursividad


1.3. Aplicación de la recursividad
1.4. Recursividad y estructuras cíclicas
1.5. Subrutinas
2. ESTRUCTURAS COMPUESTAS

Potrebbero piacerti anche