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

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

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

4 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.