Sequenza di Fibonacci ricorsiva in Java

Rashmi Patidar 12 ottobre 2023
  1. Sequenza di Fibonacci
  2. Ricorsione
  3. Sequenza di Fibonacci ricorsiva in Java
Sequenza di Fibonacci ricorsiva in Java

Sequenza di Fibonacci

Una sequenza che è formata dalla somma degli ultimi due numeri a partire da 0 e 1. Se si vuole trovare l’ennesimo elemento, allora il numero si trova sommando i termini (n-1) e (n-2), dove n deve essere maggiore di 0.

Ricorsione

La ricorsione è il processo in cui la stessa funzione o procedura definitiva chiama se stessa più volte fino a quando non incontra una condizione di terminazione. Se non specifichiamo una condizione di terminazione, il metodo entrerà in uno stato di bucle infinito.

Sequenza di Fibonacci ricorsiva in Java

Nel codice riportato di seguito, il metodo main() chiama una funzione statica getFibonacciNumberAt() definita nella classe. La funzione accetta un parametro che definisce un numero, dove vogliamo valutare il numero di Fibonacci. La funzione ha un controllo primario che restituirà 0 o 1 quando soddisfa la condizione desiderata. Altrimenti, la funzione chiamerà di nuovo se stessa diminuendo il parametro passato ad essa.

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

Produzione:

8

La valutazione dettagliata può essere vista di seguito:

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;

Possiamo modificare il programma sopra per stampare una serie fino al numero desiderato.

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

Produzione:

0 1 1 2 3 5 8 13 21 34 55
Nota
Per il calcolo di numeri più grandi, possiamo usare la classe BigInteger in Java. Il processo di ricorsione sarà complesso per numeri più grandi; quindi anche il tempo di calcolo per tali numeri sarà maggiore.
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

Articolo correlato - Java Math