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.
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.