En este artículo voy a explicar cómo imprimir la sucesión fibonacci en Java, y también expondré dos métodos para obtener el número fibonacci que iría en determinada posición.
Declararemos dos funciones: una iterativa o con ciclos y otra que utiliza recursión o recursividad para llamarse a sí misma.
Veamos entonces cómo implementar el algoritmo para la secuencia fibonacci en Java.
Sucesión fibonacci
Por si no sabes lo que es la serie fibonacci en Java, se trata de una sucesión que comienza en 0 y 1, y a partir de ello el siguiente número es la suma de los dos anteriores. Por lo tanto, la sucesión va así:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025
En ese caso imprimimos la sucesión hasta la posición 20 (contando el 0). Pues eso haremos con Java: imprimir o saber qué número va en determinada posición de la sucesión fibonacci.
Fibonacci en Java con ciclos
Una vez que ya explicamos el algoritmo veamos el código de la función que usa un ciclo for.
/**
* Sucesión fibonacci iterativo en Java
*
* @author parzibyte
*/
public static long fibonacci(long posicion) {
long siguiente = 1, actual = 0, temporal = 0;
for (long x = 1; x <= posicion; x++) {
// Si no quieres imprimirla, comenta la siguiente línea:
System.out.print(actual + ", ");
temporal = actual;
actual = siguiente;
siguiente = siguiente + temporal;
}
// Si no quieres imprimirla, comenta la siguiente línea:
System.out.println(actual);
return actual;
}
Cuando se requiere calcular la sucesión de fibonacci con Java usando ciclos, declaramos dos variables: siguiente
y actual
. Dentro del ciclo (que va desde 1 hasta la posición
) asignamos a siguiente
el valor de siguiente
más actual
, pero “respaldando” la actual
en una temporal
.
Al final se regresa actual
y ese es el número que va en la sucesión en esa posición.
Sucesión de fibonacci recursiva
Si queremos un enfoque recursivo y aplicando las matemáticas, podemos recurrir al de la forma de llamar a la misma función pero restando 1 al número, y sumando el resultado a lo que salga de llamar a la misma función de nuevo pero restando 2.
/**
* Sucesión fibonacci recursiva en Java
*
* @author parzibyte
*/
public static long fibonacciRecursivo(long posicion) {
if (posicion < 2)
return posicion;
return fibonacciRecursivo(posicion - 1) + fibonacciRecursivo(posicion - 2);
}
Por cierto, la recursividad se rompe cuando el número es menor a 2.
Modo de uso
Puedes pegar el código de las funciones dentro de la clase Main o en cualquier otro lugar. Recuerda, si vas a ponerlo en una clase que vas a instanciar, no es necesario declarar los métodos como estáticos.
public static void main(String[] args) {
// ¿Qué número va en la posición 20?
fibonacci(20);
// También recursivo
long elQueVaEnLa20 = fibonacciRecursivo(20);
System.out.println("El que va en la posición 20 es " + elQueVaEnLa20);
}
En el ejemplo de arriba se obtiene la posición 20 de la serie de fibonacci, y el primer método se encarga de imprimir la serie. Vemos que con ambos métodos se obtiene el mismo resultado.
Finalmente te invito a ver más sobre Java o Algoritmos.