角谷定理

2023-05-16

一、题目描述

输入一个自然数,若为偶数,则把它除以2;若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可以得到自然数1。
如:输入22
输出22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
step=16

二、算法构造

1、递归算法
根据角度定理的思想,定义一个有两个变量的递归函数:Kakutani(n,s)。其中n表示要计算的自然数,s表示已进行的步骤数。函数的意义是自然数n经过s步运算后得到自然数1。容易得到下面的递归公式:
Kakutani(n,s) = { Kakutani(1,s) = 1 num=1
---------------------| Kakutani(num/2,s)+Kakutani(num*3+1,s)+Kakutani(1,s) num>1
2、非递归算法
具体算法实现如图所示。
在这里插入图片描述
图2.2 角度定理非递归实现

三、算法实现

//角谷定理递归实现
int Kakutani(int num, int step){
	if (1 == num){
		return step;
	}
	else{
		if (0 == num % 2){
			step++;
			printf("%d ", num / 2);
			return Kakutani(num / 2, step);
		}
		else{
			step++;
			printf("%d ", num * 3 + 1);
			return Kakutani(num * 3 + 1, step);
		}
	}
}

//角谷定理非递归实现
int Kakutani_un(int num){
	int step = 1;
	while (num > 1){
		if (0 == num % 2){
			step++;
			num = num / 2;
			printf("%d ", num);
		}
		else{
			step++;
			num = num * 3 + 1;
			printf("%d ", num);
		}
	}
	return step;
}

四、调试、测试及运行

1、调试
(1)进入Kakutani()函数,调用递归结束开始返回的各数据的值。
在这里插入图片描述
(2)Kakutani()函数调用结束各数据的值。
在这里插入图片描述
(3)进入Kakutani_un()函数,调用递归结束开始返回的各数据的值。
在这里插入图片描述
(4)Kakutani_un()函数调用结束各数据的值。
在这里插入图片描述
2、测试
测试代码:
void test(int num, int step)
{
int i = 1;
while (num > 1){
if (0 == num % 2){
i++;
num /= 2;
}
else{
i++;
num = num * 3 + 1;
}
}
if (i == step){
printf(“测试正确\n”);
}
}
测试结果:
在这里插入图片描述
3、运行
在这里插入图片描述

五、总结

使用vs编译出现如下错误:
错误1error LNK1168:无法打开
E:\Visual Studio-workspace\chapter_6\Debug\chapter_6.exe 进行写入
E:\Visual Studio-workspace\chapter_6\chapter_6\LINK chapter_6
解决办法有三种(前两种治标不治本,第三种办法可以根治):
1.什么都不干,等一会,大概几分钟吧,就可以成功生成了。
2.把之前Debug文件夹里生成的.exe文件删掉,就可以成功生成了。
3.最根本的办法:打开控制面板->管理工具->服务->启用Application Experience服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

角谷定理 的相关文章

  • 比du更好用的磁盘空间统计工具-diskusage

    1 介绍 官网地址 xff1a https github com chenquan diskusage blob master README CN md diskusage xff1a 一个显示磁盘使用情况的工具 xff08 Linux M
  • 阿里云服务器的端口有什么用,常用的端口有哪些,如何配置

    服务器端口数最大有65535个 xff0c 但是实际上常用的端口只有几十个 xff0c 由此可以看出未定义的端口相当多 比如 xff1a 通常TCP IP协议规定Web采用80号端口 xff0c FTP采用21号端口等 xff0c 而邮件服
  • 阿里云公司简介

    阿里巴巴云计算技术有限公司 xff0c 阿里巴巴集团旗下云计算品牌 xff0c 是全球领先的云计算及人工智能科技公司 公司简介 阿里巴巴云计算技术有限公司 xff08 简称阿里云 xff09 成立于 2009 年 9 月 10 日 xff0
  • 阿里云ECS服务器最新价格表(最新版收费标准)

    在2020年 xff0c 阿里云上架了t6 c6 r6 g6等实例规格的云服务器 xff0c 最新的价格表也有所变化 本文更新了截止目前ECS服务器最新的企业级linux系统价格表和最新磁盘及带宽价格表 xff0c 更多最新的阿里云服务器价
  • 阿里云和腾讯云全方位对比

    一 竞品分析目的 本文旨在人工智能行业通过对云服务平台代表性产品阿里云 腾讯云的产品定位 核心功能 发展战略等方面的研究 xff0c 探讨人工智能云服务平台产品的在国内的发展趋势 为之后根据实际情况利用具有较多优势的云服务平台研发应用层人工
  • 如何将其他注册商处的域名申请转出并转入阿里云(图文教程)

    随着越来越多的用户使用阿里云产品搭建自己的网站或者部署APP等项目 xff0c 将其他注册商处注册的域名转入阿里云就成了很多用户的需求 xff0c 毕竟将域名和云服务器等产品都放在阿里云既方便自己管理 xff0c 同时又更加放心 xff0c
  • 我对Swift的几点疑问

    Swift自问世以来 xff0c 就获得了全球开发者的青睐 xff0c 可以说集万千庞爱于一身了 xff0c 尤其是WWDC上的性能展示 xff0c 更是让开发者为之振奋 但是 xff0c 我却一直有几个疑问没有弄清 xff0c 不知您的看
  • 阿里云服务器怎么正确使用OSS内网地址?

    很多客户回租用阿里云服务器 xff0c 那么阿里云服务器怎么正确使用OSS内网地址 xff1f 当您通过OSS内网地址访问OSS资源时 xff0c 不收取流量费用 本文介绍ECS实例如何通过OSS内网地址访问OSS资源 通过OSS内网地址访
  • 2022年阿里云服务器租用价格表(最新收费标准及活动价格表)

    在2021年 xff0c 阿里云在全球率先宣布了基于 Intel Ice Lake 处理器的第七代云服务器ECS xff0c 性能提升的同时降低了报价 xff0c 性价比更高了 进入2022年阿里云服务器价格依然是大家关心的问题 xff0c
  • 游戏行业如何上云?阿里云架构师解读四大主流游戏架构

    游戏行业是阿里云最早聚焦的行业之一 xff0c 近年来游戏行业的变化 云计算产品技术的变化都与日俱进 随着行业业务的变化 技术架构的演进以及阿里云产品的迭代演进 xff0c 整体的产品技术选型在不同的游戏场景 业务场景也不尽相同 本文将聚焦
  • 阿里云企业级ARM计算规格族特点及适用场景介绍

    阿里云企业级ARM计算规格族是阿里云继X86计算 异构计算 弹性裸金屈服务器 超级计算集群之后推出的全新架构云服务器 xff0c ARM计算规格族有通用型实例规格族g8m 通用型实例规格族g6r和计算型实例规格族c6r这三个 下面是这三个实
  • 阿里云服务器共享型、计算型、通用型实例有什么区别?如何选择?

    现在我们我们大多数用户购买阿里云服务器的时候都是通过阿里云各种促销活动去下单购买 xff0c 但是活动中会有共享型 计算型 通用型等不同类型的实例规格 xff0c 例如同样是2核4G的云服务器 xff0c 活动中往往都会有共享型s6 计算型
  • 阿里云企业版实例迁移工具最佳实践

    本篇内容主要分为两个部分 xff1a 1 企业实例迁移的背景与挑战 2 阿里云企业实例迁移工具详解 一 企业实例迁移的背景与挑战 阿里云物联网平台 xff0c 分为公共区和企业实例 以餐馆用餐为例 xff0c 公共区相当于在大堂用餐 不同时
  • 阿里云服务器快速购买、自定义购买、通过活动购买图文教程

    阿里云是国内最知名的云服务器商 xff0c 凭借着稳定 xff0c 技术可靠和安全方面的优势成为了国内用户购买云服务器的首选服务商 购买阿里云服务器有快速购买 自定义购买和活动购买三种方式 xff0c 下面是这三种购买方式的图文教程 一 通
  • 阿里云服务器如何购买?三种方式可买(图文教程举例)

    阿里云服务器可以通过快速购买 自定义购买和活动购买三种方式去购买 每种购买方式都有自己的适合场景 xff0c 有很多需要注意的地方 xff0c 下面是这些购买方式的具体图文教程及注意事项 xff0c 适合初次购买阿里云服务器的用户参考 一
  • 阿里云服务器包年包月收费模式常见问题汇总(官方资料解答)

    阿里云服务器收费模式包含包年包月 按量付费和抢占式实例三种模式 xff0c 其中用户选择最多的是包年包月模式 xff0c 本文汇总了阿里云服务器包年包月收费模式常见问题及答案 xff0c 以供大家更详细的了解包年包月模式是如何收费的 什么是
  • 阿里云服务器4核8G配置多少钱?新购和续费价格分别是多少?

    阿里云服务器4核8G配置多少钱 xff1f 目前新用户购买4核8G配置云服务器最低为73 38元 3月起 xff0c 年付最低是765 94元 年起 xff0c 到期续费多少钱 xff1f 目前新购之后续费享受4 5折 详细的收费标准 活动
  • 安装和简易配置WSL(Windows Subsystem for Linux)

    安装和简易配置WSL xff08 Windows Subsystem for Linux xff09 我的环境 xff1a Win11家庭版 20年秋季学期学习的操作系统课程 xff0c 课程实验中被要求使用Linux环境 xff0c 都去

随机推荐