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