Secuencia de Fibonacci recursiva en Java

Rashmi Patidar 12 octubre 2023
  1. Secuencia Fibonacci
  2. Recursividad
  3. Secuencia de Fibonacci recursiva en Java
Secuencia de Fibonacci recursiva en Java

Secuencia Fibonacci

Una secuencia que está formada por la suma de los dos últimos números comenzando desde 0 y 1. Si uno quiere encontrar el n-ésimo elemento, entonces el número se encuentra sumando (n-1) y (n-2) términos, donde n debe ser mayor que 0.

Recursividad

La recursividad es el proceso en el que la misma función o procedimiento definitivo se llama a sí mismo varias veces hasta que encuentra una condición de terminación. Si no especificamos una condición de terminación, el método entrará en un estado de bucle infinito.

Secuencia de Fibonacci recursiva en Java

En el código dado a continuación, el método main() llama a una función estática getFibonacciNumberAt() definida en la clase. La función toma un parámetro que define un número, donde queremos evaluar el número de Fibonacci. La función tiene una verificación primaria que devolverá 0 o 1 cuando cumpla con la condición deseada. De lo contrario, la función se volverá a llamar a sí misma disminuyendo el parámetro que se le ha pasado.

package recursiveFibonacci;

public class RecursiveFibonacciSequence {
  public static void main(String[] args) {
    int fibonacciNumber = getFibonacciNumberAt(6);
    System.out.println(fibonacciNumber);
  }

  public static int getFibonacciNumberAt(int n) {
    if (n == 0)
      return 0;
    else if (n == 1)
      return 1;
    else
      return getFibonacciNumberAt(n - 1) + getFibonacciNumberAt(n - 2);
  }
}

Producción :

8

La evaluación detallada se puede ver a continuación:

getFibonacciNumberAt(6) = getFibonacciNumberAt(5) + getFibonacciNumberAt(4); //5+3=8
getFibonacciNumberAt(5) = getFibonacciNumberAt(4) + getFibonacciNumberAt(3); //3+2=5
getFibonacciNumberAt(4) = getFibonacciNumberAt(3) + getFibonacciNumberAt(2); //2+1=3
getFibonacciNumberAt(3) = getFibonacciNumberAt(2) + getFibonacciNumberAt(1); //1+1=2
getFibonacciNumberAt(2) = getFibonacciNumberAt(1) + getFibonacciNumberAt(0); //1+0=1
If, getFibonacciNumberAt(1) = 1;
And getFibonacciNumberAt(0) = 0;

Podemos modificar el programa anterior para imprimir una serie hasta el número deseado.

package recursiveFibonacci;

public class RecursiveFibonacci {
  public static void main(String[] args) {
    int maxCount = 10;
    for (int i = 0; i <= maxCount; i++) {
      int fibonacciNumber = printFibonacci(i);
      System.out.print(" " + fibonacciNumber);
    }
  }

  public static int printFibonacci(int n) {
    if (n == 0)
      return 0;
    else if (n == 1)
      return 1;
    else
      return printFibonacci(n - 1) + printFibonacci(n - 2);
  }
}

Producción :

0 1 1 2 3 5 8 13 21 34 55
Nota
Para el cálculo de números más grandes, podemos usar la clase BigInteger en Java. El proceso de recursividad será complejo para números más grandes; por lo tanto, el tiempo de cálculo para tales números también será mayor.
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artículo relacionado - Java Math