La successione di Fibonacci è una successione di numeri interi positivi in cui ciascun numero a cominciare dal terzo è la somma dei due precedenti e i primi due sono 1, 1.
Quindi ad esempio la successione di N numeri dove N è uguale a 10 sarà questa:
1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55
Per lo sviluppo dell’algoritmo prendiamo due variabili primo e secondo e ad entrambe assegniamo il valore 1, in quanto rappresentano i primi due termini della successione di Fibonacci, quindi avremo:
primo=1
secondo=1
Visualizziamo in output le due variabili.
Successione di Fibonacci
A questo punto prendiamo in input N che indica quanti numeri della successione di Fibonacci vogliamo calcolare.
Di volta in volta sarà l’utente a decidere quanti termini vorrà visualizzare.
Poniamo che N sia almeno uguale a 2, per poter stampare almeno due termini della successione di Fibonacci e quindi con un ciclo do-while richiediamo N qualora fosse minore di 2. In questo modo l’utente è obbligato per andare avanti ad inserire un numero maggiore o uguale a 2.
DO_WHILE
IN N
END DO_WHILE
Creiamo un ciclo definito che duri N volte meno 2, in quanto i primi due numeri sono stati inseriti (primo e secondo). Utilizziamo per tale scopo una variabile contatore che chiamiamo i e che facciamo partire da 2, per i motivi suddetti.
All’interno del ciclo calcoliamo il terzo numero della successione di Fibonacci, usando una variabile di nome terzo che poniamo uguale alla somma di primo più secondo, cambiamo le variabili primo che poniamo uguale a secondo e secondo che poniamo uguale a terzo, in questo modo si calcolano tutti i termini della successione di Fibonacci finché il contatore non raggiunge N.
terzo=primo + secondo
primo=secondo
secondo=terzo
Visualizziamo in output la variabile terzo e abbiamo terminato l’algoritmo.
Di seguito la pseudocodifica e il diagramma di flusso della successione di Fibonacci sviluppato con Algobuild:
PROG main ASSIGN primo=1 ASSIGN secondo=1 OUT primo OUT secondo DO_WHILE //N<2 IN N END DO_WHILE N<2 ASSIGN I=2 WHILE I<=N ASSIGN terzo=primo+secondo OUT terzo ASSIGN primo=secondo ASSIGN secondo=terzo ASSIGN I=I+1 END WHILE //I<=N END PROG //main
Alcuni link utili
Indice argomenti diagramma a blocchi
Divisori di un numero con algobuild
Algoritmi di selezione sugli angoli
Numeri amicabili con algobuild