**题目:猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1。例如,3→10→5→16→8→4→2→1.
输入n,输出变换的次数。n<=10的九次方。
样例输入:
3
样例输出:
7
**
#include<stdio.h>
int main()
{
int n,t = 0;
scanf("%d",&n);
while(n>1){
if(n%2==1)
n = 3*n + 1;
else n = n/2;
t++;
}
printf("%d",t);
return 0;
}
思路:一个简单的循环计数,定义一个初始变量用来计数,将判断条件放入循环中,得出最后接过。
一些注意的问题:1.准备用for循环,发现while循环更加简单,因为循环次数不确定。
2.没有注意题目给出n的范围,会导致输入非常大的数是,导致溢出,最好将n定义为long long型。