Fibonacci recursivo y con ciclos en Java

Sucesión fibonacci en Java: método iterativo y recursivo

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.

Fibonacci recursivo y con ciclos en Java
Fibonacci recursivo y con ciclos en Java

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *