Practica sobre funciones.
Que es la recursividad.
Es una técnica de programación que nos permite que un bloque de instrucciones se ejecute n veces. Remplaza en ocasiones a estructuras repetitivas.
Una función es recursiva cuando el cuerpo de la función utiliza a la propia función. Dentro de una función recursiva suelen distinguirse dos partes:
- Los casos base: Son aquellos que para su solución no requieren utilizar la función que se está definiendo.
- Los casos recursivos: Son aquellos que sí que requieren utilizar la función que se está definiendo.
Las definiciones recursivas funcionan siempre y cuando las llamadas recursivas se realicen de forma que en algún momento se lleguen a los casos base.
Una función es recursiva finaliza cuando tras la llamada recursiva no hay que realizar ningún cómputo adicional. Es decir, el valor devuelto en la llamada recursiva es igual al valor que debe devolver la función.
Ejemplos
1- obtenga la suma de los números naturales desde 1 hasta N. Se debe pasar como parámetro el número N.
public static void main(String[] args)
{ //llamada para obtener la suma de 5
System.out.println(sum(4));
}
//método que devuelve la suma de los elementos desde n hasta 1
//ejemplo: n = 4 -> 4+3+2+1=10
static int sum(int n)
{
//caso base
if(n==1)
return 1;
//llamada recursiva
else
return n+sum(n-1);
}
2- Obtenga el factorial de un número N. Se debe pasar como parámetro el número N.
public static void main(String[] args)
{
//obtier factorial de n
int n = 4;
System.out.println(n+"! = "+fact(n));
}
//método que devuelve el factorial de n
//ejemplo: n = 4 -> 4x3x2x1
static int fact(int n)
{
if(n>1) return n * fact(n-1);
else return 1;
}
3- calcule el número de Fibonacci a partir de un número pasado como parámetro.
public static void main(String[] args)
{
//numero de fibonacci
int num = 5;
System.out.println("Fibonacci de "+num+" es "+fibonacci1(num));
System.out.println("Fibonacci de "+num+" es "+fibonacci2(num));
System.out.println("Fibonacci de "+num+" es "+fibonacci3(num));
}
//solución 1
static int fibonacci1(int n)
{
if (n>1) return fibonacci1(n-1) + fibonacci1(n-2); //función recursiva
else if (n==1)
return 1;
else
return 0;
}
//solución 2
static int fibonacci2(int n)
{
if (n>1)
return fibonacci2(n-1) + fibonacci2(n-2); //función recursiva
else return n;
}
//solución 3
static int fibonacci3(int n)
{
if (n<2)
return n;
else return fibonacci3(n-1) + fibonacci3(n-2); //función recursiva
}
Comentarios
Publicar un comentario