Sequência de Fibonacci recursiva em Java

Rashmi Patidar 12 outubro 2023
  1. Sequência de Fibonacci
  2. Recursão
  3. Sequência de Fibonacci recursiva em Java
Sequência de Fibonacci recursiva em Java

Sequência de Fibonacci

Uma sequência que é formada pela adição dos dois últimos números começando em 0 e 1. Se alguém quiser encontrar o enésimo elemento, então o número é encontrado pela adição dos termos (n-1) e (n-2), onde n deve ser maior que 0.

Recursão

Recursão é o processo em que a mesma função ou procedimento definitivo chama a si mesmo várias vezes até encontrar uma condição de término. Se não especificarmos uma condição de término, o método entrará em um estado de loop infinito.

Sequência de Fibonacci recursiva em Java

No código fornecido a seguir, o método main() chama uma função estática getFibonacciNumberAt() definida na classe. A função recebe um parâmetro que define um número, onde queremos avaliar o número de Fibonacci. A função tem uma verificação primária que retornará 0 ou 1 quando atender à condição desejada. Caso contrário, a função se chamará novamente diminuindo o parâmetro passado a ela.

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);
  }
}

Resultado:

8

A avaliação detalhada pode ser vista abaixo:

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 o programa acima para imprimir uma série até o número desejado.

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);
  }
}

Resultado:

0 1 1 2 3 5 8 13 21 34 55
Nota
Para o cálculo de números maiores, podemos usar a classe BigInteger em Java. O processo de recursão será complexo para números maiores; portanto, o tempo de cálculo para esses números também será maior.
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

Artigo relacionado - Java Math