3n+1

對任何一個自然數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;
	}
}


發佈了57 篇原創文章 · 獲贊 35 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章