1. 自底向上与自顶向下
- // 自底向上
- #include<iostream>
- using namespace std;
- int f[101];
- int main()
- {
- int n;
- f[1]=1;
- f[2]=1;
- while(cin>>n){
- for(int i=3;i<=n;i++){
- f[i]=f[i-1]+f[i-2];
- }
- cout<<f[n]<<endl;
- }
- }
- View Code
- // 自顶向下递归 备忘录
- #include<iostream>
- using namespace std;
- int gcd(int n){
- if(n<3) return 1;
- else return gcd(n-1)+gcd(n-2);
- }
- int main()
- {
- int n;
- while(cin>>n){
- cout<<gcd(n)<<endl;
- }
- }
- View Code
2. 使用共识
3. 使用矩阵乘方
来源: http://www.bubuko.com/infodetail-2946428.html