RECURSIVIDAD Un objeto se dice que es recursivo si está definido parcialmente en términos de si mismo La recursividad permite definir un conjunto infinito de objetos en términos finitos. I n d i r e c t a . La recursividad puede ser D i r e c t a o In
Directa Directa.- La función se llama directamente a si mismo. Función A Funcion A
ING. FELIX HUARI
1
CONTINUACION... Indirecta.- La función llama a otra función, y este a su vez llama al primero. Función A
Función B Función B
Función A ING. FELIX HUARI
2
CARACTERISTICAS DE RECURSIVIDAD Para que exista la recursividad, debe cumplirse lo siguiente: Debe existir valores de los argumentos llamados valores base(criterio base) por el que la función no se llame a si mismo. Cada vez que la función se llame a si mismo (directa o indirectamente), debe estar mas cerca del valor base (criterio base). Ejemplos: Una fotografía de una fotografía. Un periodista trasfiere el control a otro periodista que esta en otra ciudad. ING. FELIX HUARI
3
RECURSIVIDAD Calcular la suma de los 5 primeros enteros positivos 5=5+4 4=4+3 3=3+2 2=2+1 1=1 2=3 3=6 4 = 10 5 = 15 1, si ,...m
f (m)
1
m f (m 1), si ,...m 1 ING. FELIX HUARI
4
EJEMPLOS DE APLICACIÓN //Programa que calcula el los n primeros números usando función recursiva #include using namespace std; // declarando la funcion int Suma(int m); int main() { int n; cout<<"Ingrese el valor de n:"; cin>>n; cout<<"La Suma de los "<
ING. FELIX HUARI
5
CONTINUACION DEL EJEMPLO.... //definiendo la funcion suma int Suma(int m) { if(m==1) return 1; else { cout<<"Iteracion:"<
6
SALIDA DE RESULTADOS
ING. FELIX HUARI
7
EJEMPLO CON VECTORES... #include using namespace std; int SumElemArray(int a[], int n); //suma recursiva de los elementos de un array Int main() { int a[]={50,40,30,20,10}; int n=5; cout<<"Suma de elementos = "<< SumElemArray(a,n)<
system("PAUSE"); } ING. FELIX HUARI
8
CONTINUACION EJEMPLO DE RECURSIVIDAD CON VECTORES //Definiendo la funcion int SumElemArray (int a[], int n) { if (n==1) return a[0]; else return (a[n-1]+ SumElemArray (a,n-1)); }
ING. FELIX HUARI
9
RECURSIVIDAD CON VECTORES /* Escribir una funcion recursiva para leer, escribir y calcular el elemento menor de un arreglo unidimensional de tamaño N */ #include using namespace std; #define INPUT cout<<"LECTURA DE DATOS\n"; #define OUPUT cout<<"SALIDA DE DATOS\n"; const int N=20; // declarando la funcion void LecturaVector(int,int X[]); void EscribeVector(int, int X[]); ING. FELIX HUARI
10
RECURSIVIDAD CON VECTORES int MenorElementoVector(int, int X[]); //Programa principal int main() { int A[N],n; cout<<"Ingrese Numero de elementos:";cin>>n; INPUT; LecturaVector(n,A); OUPUT; EscribeVector(n,A); cout<<"Elemento Menor es:"<
ING. FELIX HUARI
11
RECURSIVIDAD CON VECTORES //definiendo la funcion Lectura void LecturaVector(int m,int X[]) { if(m==1) { cout<<"X["<>X[0]; } else { LecturaVector(m-1,X); cout<<"X["<>X[m-1]; } } ING. FELIX HUARI
12
RECURSIVIDAD CON VECTORES //definiendo la funcion Escribir void EscribeVector(int m,int X[]) { if(m==1) cout<<"X["<
ING. FELIX HUARI
13
RECURSIVIDAD CON VECTORES int MenorElementoVector(int m, int X[]) { if(m==1) return X[0]; else if(X[m-1]
ING. FELIX HUARI
14
RECURSIVIDAD CON CADENAS
ING. FELIX HUARI
15
RECURSIVIDAD CON CADENAS
ING. FELIX HUARI
16