很重要的一点就是,一定要考虑n不一定小于m情况。一个我犯得错误:输出的问题……要输出n, m真的就得用n, m而不能用x, y代替。 #include<iostream> using namespace std; int main(){ int n, m, max, temp, len, j, i; int x, y; while(cin>>n>>m){ x=n; y=m; if(x > y){ //考虑到n不一定小于m的情况; temp=x; x=y; y=temp; } max=1; for(i=x; i<=y; i++){ j=i; len=1; while(j!=1){ //一旦为1,则停止这一层循环; len++; if(j%2==1) j=3*j+1; else j=j/2; } if(max>=len) max=max; else max=len; } cout<<n<<" "<<m<<" "<<max<<endl; } return 0; }