#include <stdio.h>
#include <math.h>
// 算法竞赛的目标是编程对任意输入均得到正确的结果。
// 请先独立完成,如果有困难可以翻阅本书代码仓库中的答案,但一定要再次独立完成。
// “抓住主要矛盾”——始终把学习、实验的焦点集中在最有趣的部分。如果直观地解决方案行得通,就不必追究其背后的原理。
/**
【题目】3n+1问题
猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。
经过若干次这样的变换,一定会使n变为1。例如,3→10→5→16→8→4→2→1。
输入n,输出变换的次数。n≤10^9(10的9次方)。
样例输入:
3
样例输出:
7
*/
/**
【分析】不难发现,程序完成的工作依然是重复性的:要么乘3加1,要么除以2,但这里循环的次数是不确定的,而且n也不是“递增”式的循环。这样的情况很适合
用while循环来实现。
*/
int main()
{
int n;
int count = 0;
scanf("%d",&n);
while(n!=1) {
if (n%2==1) { // 奇数
n = 3*n + 1;
} else {
n = n/2;
}
count ++ ;
}
printf("%d\n",count);
return 0;
}