對任何一個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到n=1。編寫程序要求:對給定的任一不超過1000的正整數n,簡單地數一下,需要多少步(砍幾下)才能得到n=1? 輸入格式: 多組數據,每行一個整數0<n<=100000 輸出格式: 每行一個數,表示結果。
代碼如下:
#include <iostream>
using namespace std;
int fun(int);
void main()
{
cout<<"enter the number: ";
int n;
cin>>n;
int counter=0;
while(n!=1)
{
n=fun(n);
counter++;
}
cout<<counter<<endl;
}
int fun(int x)
{
if(x%2==0)
{
return x/2;
}
else
{
return (3*x+1)/2;
}
}