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.
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.
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.
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.
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.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.