#include<iostream>
#include<vector>
using namespace std;
long long fib(int n) { //递归实现fib数列第n项的计算,n>45基本就完蛋了
if (n == 2)return 1;
if (n == 1)return 0;
return fib(n - 2)+fib(n - 1);
}
int main() {
int n = 30; //第一种递推实现,以递推公式推导出第n项,很轻松
vector<long long> a(n,1);
a[0] = 0;
a[1] = 1;
for (int i = 2; i < n; i++) {
a[i] = a[i - 1] + a[i - 2];
}
cout << a[n-1] << endl;
long long f = 0, g = 1; //第二种,只用两个变量的递推,就是动态规划
int n1 = n - 2;
while (n1--) {
g = g + f;
f = g - f;
}
cout << g << endl;
cout << fib(n) << endl; //第三种,递归实现(见递归函数)
}