Esercizio 7
Scrivere un algoritmo ricorsivo per individuare l’i-esimo termine della
serie di Fibonacci
1, 1, 2, 3, 5, 8, 13,.. dove l’i-esimo termine è dato dalla somma dei due
precedenti.
In questo caso pensiamo di realizzare una funzione fi() con la prerogativa:
fi(1)=1
fi(2)=1
fi(3)=2
...
fi(7)=13
Premesso che la serie di Fibonacci mette a dura prova qualsiasi calcolatore
per valori di n superiori a 90; la soluzione seguente ‘regge’ bene fino
a fi(46) poi bisogna pensare ad utilizzare tipi di dato che mettano a disposizione
più cifre come unsigned long log .
#include<iostream>
using namespace std;
long fi2(long pu,long u, int x, int n){
return (n==x) ? pu+u : fi2(u,pu+u,x+1,n);
}//fi2
long fi(int n){
return n=0 || n==1 ? n : fi2(0,1,2,n);
}//fi
main(){
int n; cout<<"n:";cin>>n;
cout<<fi(n);
}//main