方法一:常规的while循环对n进行条件循环,
循环条件为n!=1;
n为偶数时n=n/2;n为奇数时n=(3*n+1)/2
当n=1时结束循环,输出num
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,num=0;
cin>>n;
while(n!=1)
{
if(n%2==0) n=n/2;
else n=(3*n+1)/2;
num++;
}
cout<<num;
return 0;
}
方法二:递归实现
定义一个int create(int num,int&count)函数递归得出结果,引用&count用来计数,函数结束条件是if(n==1)return 1;值得注意的是count++要在if(set(n)) return create(n/2,count);
else return create((3*n+1)/2,count);前
其中bool set函数用来判断n是奇是偶
#include<iostream>
using namespace std;
bool set(int n)
{
if(n%2==0) return true;
else return false;
}
int create(int n,int&count)
{
if(n==1) return 1;
count++;
if(set(n)) return create(n/2,count);
else return create((3*n+1)/2,count);
}
int main()
{
int n,count=0;
cin>>n;
create(n,count);
cout<<count;
return 0;
}