Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Recursividad
Sonfuncionesquesellamanasmismas.
Requisitos:
Debenretornarunvalor.
Debentenerexpresionesenlasquesellamanasmismas:
cicloactivo.
Debenincluir,enunasentenciadeseleccin,unaopcinen
lacualterminenlaejecucinynosellamenasmismas:
casobase.
Sinoposeenunaopcinquelespermitaterminarsu
ejecucin,seproducirnllamadashastaagotarlosrecursos
dememoriadelsistema.
Sisealcanzaelcasobaseenunallamadadelciclo
activo,entoncesseiniciaelciclopasivooderetorno.
Recursividad
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);
}
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);
}
}
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