Está en la página 1de 13

Recursividad

Recursividad
Sonfuncionesquesellamanasmismas.
Requisitos:
Debenretornarunvalor.
Debentenerexpresionesenlasquesellamanasmismas:
cicloactivo.
Debenincluir,enunasentenciadeseleccin,unaopcinen
lacualterminenlaejecucinynosellamenasmismas:
casobase.
Sinoposeenunaopcinquelespermitaterminarsu
ejecucin,seproducirnllamadashastaagotarlosrecursos
dememoriadelsistema.
Sisealcanzaelcasobaseenunallamadadelciclo
activo,entoncesseiniciaelciclopasivooderetorno.

Recursividad

tipo_de_retorno nombre_funcion(tipo argumentos){


if ( caso_base ) return valor_base;
else {
................
return nombre_funcion(argumentos');
}
}

Recursividad
Obtener el factorial de un nmero
Casos base:
- el factorial de cero es uno
- el factorial de uno es uno
- factorial de un nmero negativo lo hacemos cero.
Ciclo activo:
- llamar a partir del nmero en forma descendente
hasta llegar al caso base.
4

Ejemplo
int factorial(int n){
if (n<0) return 0;
if (n==0) return 1;
else if (n==1) return 1;
else return n*factorial(n-1);
}
public static void main(String[] args){
int x,fac;
String mensaje = Ingrese un numero para calcular el factorial;
x = Integer.parseInt(JOptionPane.showInputDialog(mensaje));
fac=factorial(x);
JOptionPane.showMessageDialog(null,fac);
}

Qu devuelve la siguiente funcin


recursiva?
public static int funcionRecursiva (int inicio, int limite){
int retorno;
if (inicio > limite)
retorno = -1;
else
if (inicio == limite)
retorno = 1;
else
retorno=inicio*funcionRecursiva(inicio+1,limite);
return retorno;
}

Qu devuelve la siguiente funcin


recursiva?
public static void main(String[] args){
System.out.print(funcionRecursiva(14,
10));
System.out.print(funcionRecursiva(4,7)
);
}

Convertir a binario
public static void main(String[] args){
int numero;
numero = JOptionPane.showInputDialog(Ingrese un numero
entero);
binario(numero);
}
public static void binario(int n){
if (n!=0){
binario(n/2);
System.out.print(n%2);
}
}

public static void main(String[] args){


int base,exponente;
base = Integer.parseInt(JOptionPane.showInputDialog(Ingrese la
base));
exponente = Integer.parseInt(JOptionPane.showInputDialog(Ingrese el
exponente));
JOptionPane.showMessageDialog(null, La potencia es: +
potencia(base,exponente))
}
public static int potencia(int b, int e){
if (e==0){
return 1;
}
else{
return b * potencia(b,e-1);
}
}

Ejercicio
Crear una funcin recursiva que
genere la serie de fibonacci: 0, 1 , 1,
2, 3, 5, 8, 13, .
El primer trmino, para n = 0, es 0.
El segundo trmino, para n = 1 es 1.
Los sucesivos se calculan como la
suma de los dos trminos anteriores.

Ejemplo
public static void main(String[] args){
repetir();
}
public static void repetir(){
repetir();
}

11

Ejemplo
public static void main(String[] args){
System.out.println(Programa Recursivo);
imprimir(5);
}
public static void imprimir(int num){
System.out.println(num);
imprimir(num-1);
}

12

Ejemplo
public static void main(String[] args){
imprimir(5);
}
public static void imprimir(int num){
if (num > 0){
imprimir(num-1);
System.out.println(num);
}
}

13

También podría gustarte