用普通递归实现会超时

7 条评论

  • #include using namespace std; int main(){ int i=1; do{ if(i%5==0){ if(i%7!=0){ cout<<i<<endl; } } i++; }while(i<=100);

    return 0;
    

    }

    • @ 2025-3-15 21:47:38
      #include<bits/stdc++.h>
      using namespace std;
      int main(){
          int n;
      	  long long n1=1, n2=1, s=0;
      	cin>>n;
      	for(int i=3;i<=n;i++) {
      		s=n1+n2;
      		n1=n2;
      		n2=s;
      	}
      	cout<<n2<<endl;
          return 0;
      }
      
      😄 4
      • @ 2025-3-15 17:24:08
        #include <iostream>
        #include <cmath>
        #define int long long
        typedef long long ll;
        const int INF = 0x3f3f3f3f;
        const int N = 3e6+5;
        using namespace std;
        int n;
        int f[N];
        signed 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]<<endl;
        	return 0;
        }
        /*
        *注释&笔记:无
        *样例输入:
        
        *样例输出:
        
        */
        
        🤡 3
        • @ 2025-3-11 20:45:53

          临时翻了下笔记

          #include<bits/stdc++.h>
          using namespace std;
          
          /*题目描述
          说明
          用递归函数输出斐波那契数列第n项。1,1,2,3,5,8,13……
          
          
          输入格式
          一个正整数n(n<=50),表示第n项。
          
          
          输出格式
          第n项是多少。
          
          
          样例
          输入数据 1
          3
          输出数据 1
          2
          
          */
          
          int main() {
          	int n;
          	long long num1 = 1, num2 = 1, sum = 0;
          	cin >> n;
          	for (int i = 3; i <= n; i++) {
          		sum = num1 + num2;
          		num1 = num2;
          		num2 = sum;
          	}
          	cout << num2 << endl;
          	return 0;
          }
          

          好像是这个,上传了一下,可以

          • @ 2025-3-11 17:29:41

            用记忆化做

            • @ 2025-3-11 17:26:32

              #include<bits/stdc++.h> using namespace std; long long arr[51]; long long a(long long n){ if(arr[n]!=0){ return arr[n]; } if(n1||n2){ return 1; } long long t=a(n-1)+a(n-2); arr[n]=t; return t; } int main(){ long long n; cin>>n; cout<<a(n);

              return 0;
              

              }

              • @ 2024-2-29 13:29:26

                用递推去做就不会超时了 但是会超范围

              • 1

              信息

              ID
              555
              时间
              1000ms
              内存
              256MiB
              难度
              2
              标签
              (无)
              递交数
              389
              已通过
              60
              上传者