水)关于一段代码的优化
  • 板块灌水区
  • 楼主MingshengSu
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/7/19 13:00
  • 上次更新2023/10/27 19:34:05
查看原帖
水)关于一段代码的优化
669891
MingshengSu楼主2022/7/19 13:00

代码的目的是以2101年1月1日为第一天,输入日期的次序来输出日期。以下为我的代码,语言为c++。

#include<iostream>
using namespace std;
int y=2101,m=1,d=1;
int x;
int f(int x){
    
    if(x==1)return 0;
    f(x-1);
    if(m==12&&d==31){
        
        y++;
        m=1;
        d=1;
        return 0;
        
    }
    if(y%4!=0&&m==2&&d==28){
        
        m=3;
        d=1;
        return 0;
        
    }
    if(y%4==0&&m==2&&d==29){
        
        m=3;
        d=1;
        return 0;
        
    }
    if((m==1||m==3||m==5||m==7||m==8||m==10)&&d==31){
        
        d=1;
        m++;
        return 0;
        
    }
    if((m==4||m==6||m==9||m==11)&&d==30){
        
        d=1;
        m++;
        return 0;
        
    }
    d++;
    return 0;
    
}

int main(){
    
    cin>>x;
    f(x);
    cout<<y<<"年"<<m<<"月"<<d<<"日"<<endl;
    y=2101,m=1,d=1;
    main();
    return 0;
    
}

这段代码运行合理,但随着x增大,我觉得它的运行压力越来越大,我试着输入了一个三位数好像直接爆栈了。希望有dalao能提出一些优化方案。感谢

2022/7/19 13:00
加载中...