Divide y vencerás o recursividad.
Cuando un sub proceso se invoca a si mismo para la realización de alguna tarea se dice que es recursivo.
En todo sub proceso recursivo debe existir una condición que provoque la terminación de la misma para que no exista una recursividad infinita.
Para resolver un problema con recursividad tenemos que tener al menos un caso base que tenga una solución directa y otro que reduzca el tamaño del problema.
Tipos de recursividad:
- Directa
- Un sub proceso se invoca a si mismo.
- Indirecta
- Un sub proceso invoca a otro que a su vez invoca al primero.
Ejemplos:
Veamos dos ejemplos de recursividad , el primero es calcular la potencia de un número.
La potencia de x^4 es x * x^3.
1 SubProceso resultado <- Potencia (base,
exponente)
2 Si exponente=0 Entonces
3 resultado <- 1;
4 sino
5 resultado <- base*Potencia(base,exponente-1);
6 FinSi
7 FinSubProceso
8
9 Proceso DosALaDiezRecursivo
10 Definir exponente como Entero;
11 Definir base como Entero;
12 Escribir "Ingrese
Base";
13 Leer base;
14 Escribir "Ingrese
Exponente";
15 Leer exponente;
16 Escribir "El resultado
es ",Potencia(base,exponente);
17 FinProceso
El segundo es es calcular el factorial de un número.
El factorial de 10 es 10 * el factorial de 9.
1 SubProceso res <- Factorial(Numero)
2 Definir res Como Entero;
3 si Numero = 0 Entonces
4 res <- 1; //caso fin
5 Sino
6 res <- Numero * Factorial(Numero
- 1); //Caso reducción
7 FinSi
8 FinSubProceso
9
10 Proceso FactorialRecursivo
11 Definir Num Como Entero;
12 Escribir "Dime el
numero ";
13 Leer Num;
14 Escribir "El factorial
de " , Num , " es ", Factorial(Num);
15 FinProceso
No hay comentarios:
Publicar un comentario