Está en la página 1de 12

ESTRUCTURA DATOS

ORIENTADO A OBJETOS

RECURSIVIDAD

Ing. Franklin Díaz


fadiaz@unitru.edu.pe
TEMARIO
 Métodos recursivos
 Ejemplos desarrollados
FLUJO DE TRABAJO

public void metodo1(){



public void main(){ }
metodo1();
metodo2(); public void metodo2(){
System.out.println(…); …
metodo3(); }

} public void metodo3(){

}
LA RECURSIVIDAD
La recursividad consiste en métodos que se llaman a sí mismos,
evitando el uso de estructuras repetitivas (for, while, do – while).

public void/int metodo1(parametro){



metodo1(parametro);

}
LA RECURSIVIDAD
Consideraciones:
 Debe tener una condición que limite el número de llamadas al
método
 Debe contener por lo menos 1 parámetro que debe cambiar en cada
llamada
 Pueden ser métodos con y sin valor de retorno
LA RECURSIVIDAD
 Siempre debe regresar a la primera llamada

public void/int metodo1(parametro){



metodo1(parametro);

} public void/int metodo1(parametro){

metodo1(parametro);

} public void/int metodo1(parametro){

metodo1(parametro);

}
LA RECURSIVIDAD
Ejemplo
Factorial de un número

public int factorial(int n)


{
if (n<=1)
return 1;

return n* factorial(n-1);
}
LA RECURSIVIDAD
Ejemplo
Cuenta regresiva. tendríamos que pasar como parámetro un número.
Además, tras imprimir ese número, llamaremos a la misma función con
el número actual restando uno:

void cuentaRegresiva(int numero) {


System.out.println(numero);
if(numero > 0) {
cuentaRegresiva(numero - 1);
}
}
LA RECURSIVIDAD
Ejemplo
Suma de los n (pasado como parámetro) primeros números naturales

public int suma(int n)


{
if (n<=1)
return 1;

return n + suma(n-1);
}
LA RECURSIVIDAD
Ejemplo
Lista de números naturales comprendidos entre dos valores a y b dados
por el usuario.
LA RECURSIVIDAD
Ejemplo
Suma los valores de un arreglo.
LA RECURSIVIDAD
Método QuickSort.
public void quicksort(int A[], int izq, int der) {
int pivote=A[izq];
int i=izq;
int j=der;
int aux;

while(i < j){


while(A[i] <= pivote && i < j) i++;
while(A[j] > pivote) j--;
if (i < j) {
aux= A[i];
A[i]=A[j];
A[j]=aux;
}
}

A[izq]=A[j];
A[j]=pivote;

if(izq < j-1)


quicksort(A,izq,j-1);
if(j+1 < der)
quicksort(A,j+1,der);
}

También podría gustarte