//未看答案前
#include<stdio.h>
main(){ //main函数必须加返回值类型int
int n,c;
scanf("%d",&n);
for(c=0;n!=1;c++)
{
if(n%2==0)
{
n=n/2;
}
else n=(3*n+1)/2; //在这里犯了一个错误,编程中不能使用3n,而要用3*n
}
//c--;这里犯了一个超级傻逼的错误,我按照书上的样例调整,却没有相信自己的算法
printf("%d",c);
return 0;
}
标准答案:
#include<cstdio>
int main(){
int n,step=0;
scanf("%d",&n);
while(n!=1){
if(n%2==0)
n=n/2;
else
n=(3*n+1)/2;
step++;
}
printf("%d\n",step);
return 0;
}