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

Entradas populares de este blog

Descripción de los sistemas numéricos y sus conversiones.

Diagrama sistema liquidación de nómina.

Análisis BDOO y BDD