分析:
一道考察循环的题目,我们需要将问题抽象出来,对于给定的数 n n n,按照要求对其“操作”,直至其变为 1 1 1 为止,问我们“操作”(循环)了多少次。题目很简单,记得之前在柳婼大佬的博客上看到了“砍一半”这步的实现,实在是精妙。分享出来。
代码(C++) :
#include <iostream>
using namespace std;
int main()
{
int n, step = 0;
cin >> n;
while (n != 1)
{
if (n % 2 == 0) n = n;
else n = (3 * n + 1);
step ++;
n /= 2;
}
cout << step << endl;
}