题目大意:对于数n,n为奇数时乘3加1,偶数时除2,直到n为1,中间的循环次数记为m。对于输入的数啊a,b(a可能大于b)。输出a,b,m(m为n取a,b之间最大的循环次数)。
#include <stdio.h>
int rec(int a,int b)
{
if(a==1)
return b;
if(a%2==0)
return rec(a/2,b+1);
else
return rec(3*a+1,b+1);
}
int main()
{
int i,j,n,m,temp,min,max;
while(scanf("%d %d",&n,&m)!=EOF)
{
if(n>=m)
{
min=m;
max=n;
}
else
{
min=n;
max=m;
}
temp=0;
for(i=min;i<=max;i++)
{
j=1;
j=rec(i,j);
if(temp<j)
temp=j;
}
printf("%d %d %d\n",n,m,temp);
}
return 0;
}