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.

Compartir

1 comentario

  1. incocnito

    Hola, me gustaría saber como hacer para hacer la serie Fibonacci pero de forma interactiva y que pregunte el carácter a, b y asta donde quiere que llegue la serie gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.