#include<iostream>usingnamespace std;intfib(int n){if(n<1)return0;if(n ==1|| n ==2)return1;returnfib(n-1)+fib(n-2);}intmain(){longlong n =fib(45);
cout << n << endl;}
效率次之
#include<iostream>#include<vector>usingnamespace std;intfib(int n){
vector <long>tab(n+1,0L);
tab[1]= tab[2]=1L;for(int n =3; n < tab.size(); n++){
tab[n]= tab[n-1]+ tab[n-2];}return tab[n];}intmain(){long n =fib(30);
cout << n << endl;}
效率最好
#include<iostream>usingnamespace std;intfib(int n){if(n <1)return0;if( n ==1|| n ==2)return1;int pre =1,curr =1;for(int i =3; i <= n; i++){int sum = pre + curr;
pre = curr;
curr = sum;}return curr;}intmain(){int n =fib(30);
cout << n << endl;}