edutecnica

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