Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Recursividad
Recursividad
X! = 1 * 2 * 3 * 4 * ... * X
Solucin Recursiva Si X = 0
Si X > 0
X! = 1
X! = X * (X-1)!
Solucin Iterativa
public static int factorial(int x)
{
int fact = 1;
for (int i=1; i<= x; i++)
{
fact = fact * i;
}
return fact;
}
Solucin Recursiva
public static int factorial(int x)
{
if (x == 0)
return 1;
else
return (x * factorial(x 1));
}
Ejercicio:
Escribir un programa que calcule todos los factoriales del 1 hasta el valor
entero N que se introduce por teclado, el valor de N es mayor de cero.
Introduce un numero: -4
Introduce un numero: 0
Introduce un numero: 4
1!
2!
3!
4!
=1
=1*2= 2
= 1*2*3= 6
= 1 * 2 * 3 * 4 = 24
}
public static void main(String[] args)
{
int n = 0;
do{
System.out.print("Introduzca un numero: ");
n = Utilidades.leerEntero();
} while ( n < 1);
System.out.println();
for (int i=1; i<= n; i++)
{
System.out.print(i + "! = ");
for (int j=1; j < i; j++)
{
System.out.print(j + " * ");
}
System.out.println(i + " = " + factorial(i));
}
}
}
Solucion Iterativa:
public class CalculoDelFactorial
{
public static int factorial(int x)
{
int fact = 1;
for (int i=1; i<= x; i++)
{
fact = fact * i;
}
return fact;
}
public static void main(String[] args)
{
public static void main(String[] args)
{
int n = 0;
do{
System.out.print("Introduzca un numero: ");
n = Utilidades.leerEntero();
} while ( n < 1);
System.out.println();
for (int i=1; i<= n; i++)
{
System.out.print(i + "! = ");
for (int j=1; j < i; j++)
{
System.out.print(j + " * ");
}
System.out.println(i + " = " + factorial(i));
}
}
}
Solucion Recursiva:
public class CalculoDelFactorial
{
public static int factorial(int x)
{
if (x == 0)
return 1;
else
return (x * factorial(x 1));
}
public static void main(String[] args)
{
int n = 0;
do{
System.out.print("Introduzca un numero: ");
n = Utilidades.leerEntero();
} while ( n < 1);
System.out.println();
for (int i=1; i<= n; i++)
{
System.out.print(i + "! = ");
for (int j=1; j < i; j++)
{
System.out.print(j + " * ");
}
System.out.println(i + " = " + factorial(i));
}
}
}
Ejercicio:
Disear un mtodo que calcule la potencia de un numero real elevado a
un entero.
Solucion Iterativa:
public static double potencia(double base, int exp)
{
double pot = 1;
for (int i=1; i<= exp; i++)
{
pot = pot * base;
}
return pot;
}
Solucion Recursiva:
public static double potencia(double base, int exp)
{
if (exp == 0)
return 1;
else
return (base * potencia(base, exp 1));
}
Ejercicios:
1.- Escribir un mtodo que calcule la suma de los N primeros nmeros naturales.
N=5
1 + 2 + 3 + 4 + 5 = 15
N=5
5 + 4 + 3 + 2 + 1 = 15
2.- Escribir un mtodo que visualice los N primeros nmeros naturales del 1 al N.
N=4
1
2
3
4
3.- Escribir un mtodo que visualice los N primeros nmeros naturales del N al 1.
N=4
4
3
2
1
4.- Escribir un mtodo que visualice los dgitos de un nmero natural N al revs
N = 7815
5.- Escribir un mtodo que visualice los dgitos de un nmero natural N, uno por lnea.
N = 7815
visualizar el numero 7
8
1
5
Ejercicios:
1.- Escribir un mtodo que calcule la suma de los N primeros nmeros naturales.
public static int suma(int n)
{
if (n == 0)
return 0;
else
return (n + suma(n 1));
}
version 1
version 2
2.- Escribir un mtodo que visualice los N primeros nmeros naturales del 1 al N.
public static void visualiza(int n)
{
if (n > 0)
{
visualiza(n-1);
System.out.println(n);
}
}
3.- Escribir un mtodo que visualice los N primeros nmeros naturales del N al 1.
public static void visualiza(int n)
{
if (n > 0)
{
System.out.println(n);
visualiza(n-1);
}
}
4.- Escribir un mtodo que visualice los dgitos de un nmero natural N al revs
N = 7815
5.- Escribir un mtodo que visualice los dgitos de un nmero natural N, uno por linea.
N = 7815
visualizar el numero 7
8
1
5
Ejercicio
Recursividad en concha
Dado el siguiente programa Java disear un mtodo para sumar los elementos
de un vector de enteros.
Solucion Iterativa
Solucion Recursiva _1
Solucion Recursiva_2
Solucion Recursiva_3
Ejercicio
Recursividad en concha
Solucin Iterativa
Solucin Recursiva_1
Solucin Recursiva_2
Solucin Recursiva_3
Ejercicio
Recursividad en concha
Ejercicio:
Recursividad Mltiple
Fib(6)
_______________________________________
Fib(5)
Fib(4)
__________________________
______________
Fib(4)
Fib(3)
Fib(3)
Fib(2)
________________
Fib(3)
Fib(2)
____________
Fib(2)
Fib(1)
__________
Fib(2)
Fib(1)
1 vez
2 veces
3 veces
5 veces
3 veces
__________
Fib(2)
Fib(1)
Ejercicios
Recursividad
si n = 0
si n > 0
Cm,n = 1
Cm,n = Cm,n-1 * (m-n+1) div n
si
si
si
si
n=0
n=m
n>m
m>n>0
Cm,n = 1
Cm,n = 1
Cm,n = 0
Cm,n = Cm-1,n + Cm-1,n-1