/*
	Sequenza di Fibonacci
*/

#include <iostream.h>
#define MAX 20

int array[MAX], n;

void fibonacci(int x=2);  //funzione che calcola la sequenza di Fibonacci

int main(){
	cout<<"Quanrti numeri di Fibonacci vuoi che vengano stampati (min: 2 - max: "<<MAX<<")? ";
	cin>>n;
	while(n<2 || n>20){
		cout<<"Scelta non valida!\n Ripeti la tua scelta: ";
		cin>>n;
	}
	array[0]=0; //inizializzazione del primo elemento della sequenza
	array[1]=1; //inizializzazione del secondo elemento della sequenza
	fibonacci(2); //richiamo della funzione fibonacci passando l'indice del primo
					  //elemento da calcolare
	cout<<endl;

	//stampa sequenza di Fibonacci
	for(int x=0; x<n; x++)
		cout<<array[x]<<endl;
	return 0;
}

void fibonacci(int x){
	array[x]=array[x-1]+array[x-2];  //calcola l'elemento di posizione x sommando
												//i due precedenti tra loro
	if(x!=n-1) fibonacci(x+1);         //se non sono stati calcolati tutti i numeri
												//richiesti richiama la funzione fibonacci
}

