几种常见的递归算法

news2024/11/26 4:53:26
  1. 阶乘

这个比较简单就不说了。

int factorial(int n) {
	if (n <= 0)
	{
		return 0;
	}
	else if (n == 1)
	{
		return 1;
	}
	else {
		return n * factorial(n - 1);
	}
}
  1. fibonacci
    如此简单的算法,复试的时候竟然写错了!😳囧!
int fibonacci(unsigned int n) {
	if (n == 0)
	{
		
		return 0;

	}
	else if (n == 1)
	{
		
		return 1;
	}
	else {
		return fibonacci(n - 1) + fibonacci(n - 2);
	}
}
  1. ackerman
    这个函数究竟是干嘛的不太清楚。但是感觉跟fabnacci没啥本质区别。
int ackerman(unsigned int m, unsigned int n) {
	if (m == 0)
	{
		printf("%d\r\n",n+1);
		return n + 1;
	}
	else if (n == 0)
	{
		
		int res = ackerman(m - 1, 1);
		printf("%d\r\n", res);
		return res;
	}
	else {
		int res= ackerman(m - 1, ackerman(m, n - 1));
		printf("%d\r\n", res);
		return res;
	}
}
  1. hanoi

提供2个函数,都差不多,当然,其中有一个是我写的。

hannoi的时间复杂度是 2 n − 1 2^n -1 2n1

/*
算法思路:1将 n-1个盘子先放到B座位上
2.将A座上地剩下的一个盘移动到C盘上
3、将n-1个盘从B座移动到C座上
*/
void move(unsigned int x, unsigned int y, unsigned long* count)
{
	printf("%d--->%d\r\n", x, y);
	(*count)++;
}

void hannuo(int n, char one, char two, char three, unsigned long* count)
{
	if (n == 1)
		move(one, three, count); //递归截止条件
	else
	{
		hannuo(n - 1, one, three, two, count);//将 n-1个盘子先放到B座位上
		move(one, three, count);//将A座上地剩下的一个盘移动到C盘上
		hannuo(n - 1, two, one, three, count);//将n-1个盘从B座移动到C座上

	}
}



void hanoi(unsigned int a, unsigned int c, unsigned int b, int level, unsigned long* count) {
	if (level == 1)
	{
		move(a, c, count);
	}
	else {
		hanoi(a, b, c, level - 1, count);
		move(a, c, count);
		hanoi(b, c, a, level - 1, count);
	}
}

测试结果:
在这里插入图片描述

工程地址:https://github.com/satadriver/dataStruct

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高忆管理:a股印花税调整利好股市吗?印花税下调利好股市吗?

在股票市场上&#xff0c;印花税并不是一成不变的&#xff0c;政府会依据实际情况进行调整&#xff0c;那么&#xff0c;a股印花税调整利好股市吗&#xff1f;印花税下调利好股市吗&#xff1f;下面高忆管理为大家预备了相关内容&#xff0c;以供参阅。 股票印花税一般是指投资…

Transformer是否真正理解了自然语言的语义信息,还是单纯的模式识别

论文引用 此篇阅读笔记与思考主要针对以下两篇论文&#xff1a; Climbing towards NLU: On Meaning, Form, and Understanding in the Age of Data Transformer Feed-Forward Layers Are Key-Value Memories 本文将讨论第一篇论文所引发的思考&#xff08;第一篇论文的详细解…

企业级快速开发平台,助力企业走入流程化管理,创造高效办公!

要想实现高效办公&#xff0c;创造流程化管理新时代&#xff0c;需要借助一些优秀平台来实现目标。企业级快速开发平台是当前较为流行的软件平台&#xff0c;拥有多项典型功能&#xff0c;可以摒弃传统办公带来的效率低下、难维护等各种矛盾&#xff0c;一起创造流程化管理和数…

入行嵌入式,你离高薪还差一步!

近几年越来越多的人了解了嵌入式这个高薪、前景好的行业&#xff0c;许多同学也加入了嵌入式学习的队伍中&#xff0c;但对于自己未来在嵌入式的发展方向还是难以抉择&#xff0c;这里为大家答疑解惑一波。 熟悉嵌入式领域的同学都知道&#xff0c;嵌入式可以从软件和硬件两个方…

全链路数据湖开发治理解决方案2.0重磅升级,全面增强数据入湖、调度和治理能力

简介&#xff1a; 阿里云全链路数据湖开发治理解决方案能力持续升级&#xff0c;发布2.0版本。解决方案包含开源大数据平台E-MapReduce(EMR) &#xff0c; 一站式大数据数据开发治理平台DataWorks &#xff0c;数据湖构建DLF&#xff0c;对象存储OSS等核心产品。支持EMR新版数据…

C++继承-补充

本期对继承的知识进行一些补充&#xff0c;还没看过之前对继承讲解的建议先看之前的 C继承_KLZUQ的博客-CSDN博客 本期补充知识为菱形继承以及菱形虚拟继承相关知识 class A { public:virtual void func1(){cout << "A::func1" << endl;} public:int _…

平板用的触控笔什么牌子好?开学必买电容笔清单

开学季马上就要到来了&#xff0c;自从iPad的Pencil火了之后&#xff0c;国内又陆续推出了一些新的产品&#xff0c;比如平替之类的&#xff0c;有的质量非常好&#xff0c;有的价格非常实惠&#xff0c;还能被大多数人所接受。不过&#xff0c;这里面有不少的产品&#xff0c;…

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

很多同学都想要自己的专属AI模型&#xff0c;但是大模型的训练比较费时费力&#xff0c;不太适合普通用户玩。AI开发者们也意识到了这个问题&#xff0c;所以就产生了微调模型&#xff0c;LoRA就是其中的一种。在AI绘画领域&#xff0c;只需要少量的一些图片&#xff0c;就可以…

七夕情侣飞行棋游戏限定版本源码/解锁版

七夕情侣飞行棋限定版本源码已经发布&#xff01;这是一款专为情侣打造的桌游&#xff0c;让您与您的另一半一起感受浪漫的体验。 更为重要的是&#xff0c;这个版本已经移除了路由器限制&#xff0c;解锁了全部功能&#xff0c;而且没有任何加密措施&#xff0c;您只需将源码…

将ChatGPT集成整合到业务中时,3个要做和3个不要做的事项

​关于ChatGPT的讨论甚多&#xff0c;毫无疑问的是&#xff0c;几乎每个人都应该使用它&#xff0c;无论用于个人生活问题的解答还是工作中简化日常任务。越来越多的行业也正在探索这项技术的应用场景&#xff0c;从优化客户服务体验、简化旅行计划到便捷的内容创作等&#xff…

day 35 | ● 343. 整数拆分 ● 96.不同的二叉搜索树

343. 整数拆分 他是有三个数进行比较&#xff0c;原来的dp[i]、dp[j] * (i - j)、j*(i - j)。为什么第二个不包含第三个呢&#xff0c;因为我们设定的dp为至少两个数的乘积&#xff0c;所以dp[j]不包含j本身。 func integerBreak(n int) int {dp : make([]int, n 1)dp[1] 0d…

python 画二部图

1. 特色二部图 修改节点与边颜色、大小等 import networkx as nx import matplotlib.pyplot as plt plt.figure(设备-用户关系图, figsize(4, 6)) # 设置画布大小list_fid [1, 2, 3, 4] # 添加设备节点 list_uid ["a", "b", "c"] # 添加用…

【HCIP】14.BGP反射器

反射器规则 非非不反 如果路由反射器从自己的非客户机学习到的一条IBGP路由&#xff0c;则它将该路由反射给所有客户如果RR从自己的客户机学习到一条IBGP路由&#xff0c;则反射给所有非客户&#xff0c;以及除了该客户之外的所有客户如果RR学习到的EBGP路由&#xff0c;则反…

【高级IO】- 多路转接之 poll | epoll

目录 I/O多路转接 - poll poll 函数 poll 服务器 poll 服务器 poll 的优点 poll 的缺点 I/O 多路转接 - epoll epoll 的相关系统调用 epoll_create 函数 epoll_ctl 函数 epoll_wait 函数 epoll 工作原理 epoll 服务器 ​编辑 epoll 的优点&#xff08;与 sele…

vr游乐场项目投资方案VR主题游乐馆互动体验

VR文旅景区沉浸互动体验项目是指利用虚拟现实技术在文旅景区中创建沉浸式的互动体验项目。通过虚拟现实技术&#xff0c;游客可以身临其境地体验景区的风景和文化&#xff0c;与虚拟场景中的元素进行互动。 普乐蛙VR设备 普乐蛙VR设备案例分享 这种项目可以为游客带来全新的旅游…

2023年中秋月饼市场趋势分析(月饼京东销售数据分析)

中秋将至&#xff0c;月饼作为节令食品将再次掀起消费热潮。今年月饼市场的需求如何呢&#xff0c;是更受欢迎还是热度有所降低&#xff0c;结合数据我们一起来看今年月饼市场的销售表现。 在这里&#xff0c;我们分别选取了2022年第31周-32周和2023年第31周-32周&#xff08;…

抖音推出AI机器人,竟被鸡兔同笼难倒

自从Chatgpt横空出世爆火后&#xff0c;咱国内也掀起了一波AI的风潮&#xff0c;前几期有评测过百度的“文心一言”&#xff0c;总的来说体验还不错&#xff0c;但是距离Chatgpt还是有上升的空间&#xff0c;因为它的上下文理解还是不够智能。 百度有文心一言&#xff0c;阿里…

基于CentOS搭建私有仓库harbor

环境&#xff1a; 操作系统&#xff1a;CentOS Linux 7 (Core) 内核&#xff1a; Linux 3.10.0-1160.el7.x86_64 目录 安装搭建harbor &#xff08;1&#xff09;安装docker编排工具docker compose &#xff08;2&#xff09;下载Harbor 安装包 &#xff08;3&…

【操作系统】寄存器

概念 寄存器是CPU内部用来存放数据的一些小型存储区域&#xff0c;用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路&#xff0c;但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的&#xff0c;因为一个锁存器或触发器…

docker与docker-compose搭建redis1主2从3哨兵

docker安装redis docker pull redis:latest创建目录结构 用于挂载数据卷配置文件等 运行redis容器 主redis配置 下面这种方式挂载的配置文件不生效。 docker run -d \--name master_redis_6379 \-p 6379:6379 \--restart unless-stopped \-v /mydata/master_redis/data:/da…