角谷猜想(猜想专题2)

大家好,我们今天又见面了。今天小编给大家带来的是角谷猜想。

角谷猜想,由角谷静夫发现,大致为:

当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;
	
}

好了,今天就分享到这里,谢谢大家观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值