给你一个数n(0<n<1000000),n遵循下面的规律,当n=1,n=1;当n为偶数,n=n/2;n为奇数时,n=n*3+1;
自定义一个函数cal_step(int n),输入n,按上述规律最后转为1。输出每次变化的值,并计算转换的次数
#include <iostream>
#include <string.h>
using namespace std;
int res = 0;
int cal_step(int n){
if(n == 1) return res;
res ++;
if(n % 2 == 0){
return cal_step(n/2);
}else{
return cal_step(n*3+1);
}
}
int main()
{
int n;
cout << "请输入一个整数:\n" << endl;
cin >> n;
cout << cal_step(n) << endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
void cal_step(int n)
{
cout<<"变化过程:"<<endl;
int cont=0;
while(n!=1)
{
if(n%2==0)
{
n/=2;
cout<<n<<endl;
cont++;
}
else
{
n=n*3+1;
cout<<n<<endl;
cont++;
}
}
//cout<<n<<endl;
cout<<"变化次数:"<<endl;
cout<<cont<<endl;
}
int main() {
int n;
cin>>n;
cal_step(n);
return 0;
}