Como calcular la serie fibonacci en Java

Hola a todos, hoy os voy a explicar como calcular la serie fibonacci en Java.

La serie fibonacci es una serie infinita de números, donde empezando en 0 y 1, el siguiente elemento se obtiene de la suma de los dos anteriores. Por ejemplo:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55….

La idea del algoritmo (iterativamente) es la siguiente:

Tenemos 3 variables:

  • num1: el primer valor, que iremos después actualizando con el siguiente (como si avanzara). Se inicia en 0.
  • num2: el segundo valor, que se actualizara con la suma del mismo y el primer valor. Se inicia en 1.
  • suma: la suma de los dos valores. Empieza en 1.
  • serie: hasta donde queremos que llegue para hacerlo finito. En mi caso, lo pondré a 10.

Iremos recorriendo de 1 a la serie indicada, sumando el primer y el segundo valor y después actualizando el primer y segundo valor.

Os dejo el código en Java (forma iterativa):



public class FibonacciIterativo {

    public static void main(String[] args) {

        int serie = 10, num1 = 0, num2 = 1, suma = 1;

        // Muestro el valor inicial
        System.out.println(num1);
        
        for (int i = 1; i < serie; i++) {
            
            // muestro la suma
            System.out.println(suma);
            
            //primero sumamos
            suma = num1 + num2;
            //Despues, cambiamos la segunda variable por la primera
            num1 = num2;
            //Por ultimo, cambiamos la suma por la segunda variable
            num2 = suma;
            
            
        }
    }

}

Para la forma recursiva, no podemos mostrarlo como en el anterior, por lo que en la función recursiva devuelva un valor.

El código seria así:


public static int fibonacciRecursivo(int n) {

        //CASO BASE, si es cero devuelve un cero
        //Puedes poner n<=0 tamvien para incluir negativos
        if (n == 0) {
            return 0;
            //CASO BASE, si es 1 devuelve un 1    
        } else if (n == 1) {
            return 1;
        } else {
            //Hago la suma
            return fibonacciRecursivo(n - 1) + fibonacciRecursivo(n - 2);
        }

}

También os dejo la forma recursiva completo:


public class FibonacciRecursivo {

    public static void main(String[] args) {

        int serie = 10;

        for (int i = 0; i < serie; i++) {

            System.out.println(fibonacciRecursivo(i));
        }

    }

    /**
     * Devuelve el numero fibonacci dado su posicion
     *
     * @param n Posicion del numero fibonacci
     * @return Numero de la lista de fibonacci
     */
    public static int fibonacciRecursivo(int n) {

        //CASO BASE, si es cero devuelve un cero
        //Puedes poner n<=0 tamvien para incluir negativos
        if (n == 0) {
            return 0;
            //CASO BASE, si es 1 devuelve un 1    
        } else if (n == 1) {
            return 1;
        } else {
            //Hago la suma
            return fibonacciRecursivo(n - 1) + fibonacciRecursivo(n - 2);
        }

    }

}

Os dejo un vídeo de fibonacci recursivo:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *