虽然此题已经通过 AC 可是我还有一个地方弄不懂
题目:
英文
http://bit.ly/2JPfLVx
中文
https://zerojudge.tw/ShowProblem?problemid=c039
以下是通过 AC 的程式码
#include <iostream>
using namespace std;
int main()
{
long long int i,j,n,temp,sum=1,max=0;
while(cin>>i>>j)
{
cout<<i<<" "<<j<<" ";
if(i>j){temp=i;i=j;j=temp;} //假如i大于j,则两者交换,大数在右边
//此 for 循环是对的
for(int k=i;k<=j;k++)
{
n=k; //一定要有这行
while(n!=1)
{
++sum;
if(n%2!=0){n=3*n+1;}
else {n=n/2;}
}
if(sum>max){max=sum;}
sum=1;
}
cout<<max<<endl;
max=0;
}
return 0;
}
我的问题是 for 循环改成这样写为什么是错的
//此 for 循环是错的
for(n=i;n<=j;n++)
{
while(n!=1)
{
++sum;
if(n%2!=0){n=3*n+1;}
else {n=n/2;}
}
if(sum>max){max=sum;}
sum=1;
}