大家好,我们今天又见面了。今天小编给大家带来的是角谷猜想。
当n=奇数时,将其变成3n+1;当n=偶数时,将其变成n/2。
好的,既然知道了,那就开写。
问题:求出n在角谷猜想下需进行多少次才能回到1。
如——输入:16——输出:4
我们需要一个可以判断是奇数还是偶数的程序,并做出相应操作,大致如下:
if(n % 2 != 0) n = n * 3 + 1;
else n /= 2;
那我们可以把它编进一个函数,并且重复执行到n==1,大致如下:
int oddeven(int n){
while(n != 1){//相信大家看得懂,这个while指当n!=1时才会重复运行
if(n % 2 != 0) n = n * 3 + 1;
else n /= 2;
}
}
由于要求次数,因此继续编成以下函数:
int oddeven(int n){
int cnt = 0;
while(n != 1){
if(n % 2 != 0) n = n * 3 + 1;
else n /= 2;
cnt++;
}
return cnt;
}
既然编好了,那让我们继续完成最后的操作(输入输出),完整代码如下:
#include <iostream>
using namespace std;
int oddeven(int n){
int cnt = 0;
while(n != 1){
if(n % 2 != 0) n = n * 3 + 1;
else n /= 2;
cnt++;
}
return cnt;
}
int main(){
int n;
cin >> n;
cout << oddeven(n) << endl;
}
好了,今天就分享到这里,谢谢大家观看!