思路:循环判断。n为奇数,n=(3*n+1)/2;n为偶数,n/=2。
代码:
#include<stdio.h>
int main(){
int i,n;
do{
scanf("%d",&n);
}
while(n>1000||n<=0); //输入不大于1000的正整数
if(n==1){
printf("0"); //n为1直接输出
}
else{
for(i=0;n!=1;i++){
if(n%2==1){
n=(3*n+1)/2;
}
else n/=2;
}
printf("%d",i);
}
return 0;
}
二刷代码:
#include<stdio.h>
int main(){
int n,count = 0;
scanf("%d",&n);
while(n != 1){
if(n%2 == 0){
n /= 2;
}
else{
n = (3*n+1)/2;
}
count ++;
}
printf("%d",count);
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。