代码像上图这样可以满足题目给的案例,但是如果数字太大代码就无法正确执行,因为溢出了。
C语言int的取值范围在32/64位系统中都是32位,范围为-2147483648~+2147483647,无符号情况下表示为0~4294967295。
int类型不够大,那就换long int ?好像也不行。。。那long long int 呢,好像可以
#include<stdio.h>
#include<math.h>
int main()
{
long long int n,m=0;
scanf("%lld",&n);
while(n>1)
{
if(n%2==1)
n=3*n+1;
else
n=n/2;
m+=1;
}
printf("%lld",m);
return 0;
}
这样就算你输入987654321都可以了