用普通递归实现会超时

8 条评论

  • @ 2025-4-11 19:43:42

    #include using namespace std;

    long long fibonacci(int n) { if (n == 1 || n == 2) { return 1; } long long a = 1, b = 1, c; for (int i = 3; i <= n; i++) { c = a + b; a = b; b = c; } return b; }

    int main() { int n; cin >> n; cout << fibonacci(n) << endl; return 0; } 这个可以

    • #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;
          }
          /*
          *注释&笔记:无
          *样例输入:
          
          *样例输出:
          
          */
          
          🤡 2
          • @ 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
                标签
                (无)
                递交数
                344
                已通过
                49
                上传者