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):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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í:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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.
Hola me gustaria hacer la serie de fibonacci en donde el usuario diga hasta que numero de veces quiere que la serie este