2 条题解

  • 0
    @ 2023-1-23 22:10:10

    方法1:暴力递归(耗时大,不建议使用)

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n;
        long long sum;  
         
        scanf("%d",&n);
        sum =fb(n);  
        printf("%lld\n",sum);
         
        return 0;
    }
      
    long long fb(int n){      
        }else if(n==1||n==2){
            return 1;
        }
        return (fb(n-1)+fb(n-2));
    }
    

    方法2:递推

    #include <iostream>
    using namespace std;
    int main(){
        int a[1001]={1,1};
        int n,i;
        cin>>n;
        for(i=0;i<n;i++)
            a[i+2]=a[i+1]+a[i];
        cout<<a[n-1];
        return 0;
    }
    

    方法3:正常加法计算

    #include <iostream>
    using namespace std;
    int main(){
        int n,i;
        cin>>n;
        int f1=1,f2=1,f;
        for(i=2;i<n;i++){
            f=f1+f2;
            f1=f2;
            f2=f;
        }
        cout<<f;
        return 0;
    }
    
    • 0
      @ 2023-1-23 7:52:35

      斐波那契数列

      简单递推即可,状态转移方程为:

      fi=fi1+fi2f_i=f_{i-1}+f_{i-2}
      #include<bits/stdc++.h>
      using namespace std;
      long long f[105],n;
      int main(){
          cin>>n;
          f[1]=1;f[2]=1;
          for(int i=3;i<=n;i++){
              f[i]=f[i-1]+f[i-2];
          }
          cout<<f[n];
          return 0;
      }
      
      • 1

      信息

      ID
      59
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      20
      已通过
      7
      上传者