lunes, 1 de abril de 2013

Pseudocódigo Sub Procesos III


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