数据结构(3)

【Python3教程】Python3基础篇之数据结构 Python 3 提供了多种内置的数据结构,这些数据结构对于编写高效简洁的代码至关重要。每种数据结构都有其特定的用途和优势。 阅读详情

递归

递归是指,在一个函数或数据结构的定义中直接(或间接)地出现定义本身,这是一个不断深入、细化的过程。

递归的思想比较巧妙,需要自己多去思考,或者多体会别人的代码。

1)函数定义

例如:

阶乘函数,n! = n * (n-1) * ... * 1

int Fact(int n)
{
    if(n == 0) return 1;    /*若n等于0,阶乘等于1*/
 
    else return n * Fact(n-1);    /*否则把n-1传入Fact函数,并与n相乘*/
}

斐波拉契数列,第三个数等于前两个数之和

int Fibonacci(int n)
{
    if(n == 1||n ==2) return 1;    /*前两个数为1*/
 
    else return Fib(n-1) + Fib(n-2);    /*n与n的前两个数由同样的方式计算得到*/
}

2)数据结构定义

例如:

链表结点

typedef struct LNode
{
    Elemtype data;
 
    struct LNode *next;    /*在结点内部定义指向下一个结点的指针*/
 
} LNode, *LinkList;

利用链表结点的结构遍历表中的每个结点

/*-------改变指针指向--------*/
 
void Traverse1(LinkList L)
{
    while(L != NULL)        /*无递归,要循环*/
    {
        cout<<L->data;
 
        L = L->next;
    }
}
 
 
 
/*-------结合函数的递归定义-------*/
 
void Traverse2(LinkList L)
{
    if(L == NULL) cout<<"Error";    /*无循环,要递归*/
 
    else
    {
    cout<<L->data;
 
    Traverse2(L->next);
    }
}

通过观察上面的代码可以发现,递归可以实现循环的功能。

)问题的递归解法

当处理一个问题时,需要的条件是解决与问题本质相同的问题,那么就可以用到递归算法。

例如:

Hanoi塔问题

现有三个柱子,分别为A、B、C,A柱上从上往下放有由小到大排列的n个圆盘,问题是如何将A柱上的圆盘全部转移到C柱上,且保持圆盘原本的顺序。每次只能移动一个圆盘,且大圆盘必须在小圆盘下面。

【大思路】

1. 以C为辅助柱,先将A的前n-1个圆盘移动到B,然后将第n个圆盘移动到C;

2. 以A为辅助柱,将B的n-1个圆盘移动到C;

3. 第2步包含与第1步相同的操作,只是A与B的“身份”互换,故递归函数中包含前两步的内容。
 

#include <iostream>
using namespace std;
 
void move(char main1, int n, char main2)
{
	static int timer = 1;
 
	cout<<"第"<<timer++<<"次移动,"<<main1<<n<<main2<<endl;
}
 
void Hanoi(int n, char A, char B, char C)
{
 
	if(n == 1) 
		move(A,n,C);
 
	else
	{
		Hanoi(n-1,A,C,B);
		move(A,n,C);
		Hanoi(n-1,B,A,C);
	}
}
 
void main()
{
	char t1 = 'A', t2 = 'B', t3 = 'C';
	int n;
	cout<<"请输入圆盘个数n:";
	cin>>n;
	Hanoi(n,t1,t2,t3);
}

递归工作栈
在高级语言编制的程序中,调用函数与被调用函数之间的链接及信息交换需要栈的支持。

当有多个函数构成嵌套调用时,按照“先调用后返回”的原则,上述函数之间的信息传递和控制转移必须通过栈来实现,即系统将整个程序运行时所需的数据空间安排在一个栈中。

当前正运行的函数的数据区必须在栈顶。

工业级24V电源保护电路深度解析:五重防护机制详解 自恢复保险丝(PPTC,Positive Temperature Coefficient)是一种过流保护元件✅可恢复:过流后自动恢复,无需更换⚡响应快:电流超标立即动作🔄多次使用:在额定范围内可反复使用第1层(F1):阻挡过流 → 物理熔断第2层(D3):吸收浪涌 → 能量泄放第3层(Q1):防止反接 → 逻辑阻断第4层(Q2/Q3):抵御过压 → 主动切断第5层(CR):平滑启动 → 时序控制设计哲学:"让每一级保护专注做好一件事"通过这篇文章,我们深入理解了:✅自恢复保险丝。 阅读详情

相关推荐

WRF后处理总结:wrf-python与NCL在WRF后处理中的基本应用——变量提取、计算与可视化

判断需要提取的变量与诊断量确定后,使用getvar函数进行提取。可使用ncdump-h命令查看wrfout中的变量,wrf中的诊断量分类也可从官方文档处查阅。判断绘图类型所需的可视化绘图类型,决定了你在WRF后处理中的计算步骤。1D点线图:ll_to_xy interpline2D填色图:interplevel3D剖面图:vinterp vertcross绘图、美化色标、XY轴、标签的设置等等。

weixin_43750300的博客 1万+

数据结构(C语言版)之栈及递归

前言 ●数据结构作为计算机专业基础课,综合性强,抽象性高,在一定程度上增加了学习难度,本次我们共同从数据结构的基础探讨,由浅入深进行数据结构的学习。 ●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教! ●本文只浅显的探讨了栈的基本知识,作者相信随着学习课程的深入,我们将会对数据结构有更深的理解与收获!

m0_57859086的博客 8280

全志T113 Tina5.0开发:(一)添加自己的板级支持包

3.验证 先执行 source build/envsetup.sh ,然后lunch,下图可见9就是我们自己添加的板子。2. 1)修改 t113-evb1.mk重命名为t113-ws_devboard。我使用的spinand,只需要修改openwrt里面的文件即可。以下内容仅作为自己笔记,如果错误欢迎留言指出。修改t113-ws_devboard。

u014428915的博客 1164

数据结构笔记——栈的应用(递归)

目录 一、函数调用背后的过程 二、栈在递归中的应用 三、总结 一、函数调用背后的过程 函数调用的特点:最后被调用的函数最先执行结束(LIFO) 函数调用时,需要用一个栈存储: ①调用返回地址 ②实参 ③局部变量 二、栈在递归中的应用 适合用“递归”算法解决:可以把原始问题转换为属性相同,但规模较小的问题 Eg 1: 计算正整数的阶乘 递归调用时,函数调用栈可称为“递归工作栈” 每进入一层递归,就将递归调用所需信息压入栈顶 每退出一层递归,就从栈顶弹出相应信息 E.

晓风岚月 4742

Unity中USD场景导入与工业级协作实战指南

USD(Universal Scene Description)是一种面向复杂三维场景的结构化数据模型,其核心在于分层描述、变体管理与非破坏性组合,本质是支持多团队并行协作的场景协议。它不同于传统模型格式,强调运行时可编辑性与版本可控性,技术价值体现在跨软件资产一致性、零拷贝动态叠加及内存中实时合成。典型应用场景包括建筑BIM实时漫游、汽车多配置仿真、影视级灯光材质协同等工业管线。在Unity中,USD已深度集成于URP/HDRP管线,通过原生USD Importer、Runtime与Exporter三组件

weixin_32073537的博客 301

共享单车数据分析与需求预测项目

除了自行车共享系统的有趣的实际应用之外,这些系统生成的数据特征使它们成为研究的有吸引力的对象。由于这些系统在交通、环境和健康问题中的重要作用,它们引起了极大的关注。Huber 回归器:一个对异常值具有鲁棒性的模型,CV 得分为 0.4660,表明它对此数据集可能不那么有效。代码中的内容cv_score就像您正在使用的机器学习模型的成绩单。它告诉您模型的表现如何。减少异常值的影响:它还可以减少异常值的影响,因为对数转换显着缩小了数据的范围。因此,cv_score平均分数表明您的模型的预测效果如何。

极光喵的博客 2948

栈与递归

3.4 栈与递归 栈是一个重要应用是在程序设计语言中实现递归。递归是算法设计中最常用的手段,它通常将一个大型复杂问题的描述和求解变得简洁和清晰。因此递归算法常常比非递归算法更容易设计,尤其是当问题本身或所涉及的数据结构是递归定义的时候,使用递归方法更加合适。 3.4.1 采用递归算法解决问题 所谓递归是指,若在一个函数、过程或者数据结构定义的内部又直接或间接出现定义本身的应用,则称它是递归的,或者是递归定义的。 ...

m0_52397715的博客 4785

01 Aras Innovator二次开发实战:从IOM到AML的完整交互指南

本文详细介绍了Aras Innovator二次开发实战,从IOM到AML的完整交互指南。通过JavaScript和C#代码示例,展示了如何在客户端和服务端使用IOM进行开发,并深入解析AML语言的基础语法和调试技巧。文章还提供了文档管理和BOM管理等典型场景的实战案例,帮助开发者快速掌握Aras Innovator二次开发的核心技术。

wind6的博客 652

【数据结构(14)】3.4 栈与递归

严蔚敏版【数据结构】1. 递归的定义。 2. 常用到递归的3种情况。 3. 递归问题—用分治法求解。 4. 函数调用过程。 5. 递归的特点。 6. 递归转非递归。

shangguanxiu的博客 1180

如何在 Ubuntu 24.04 或 22.04 上安装和使用 GDebi

本文介绍了在Ubuntu 24.04上安装和使用GDebi的方法。GDebi是DPKG的轻量级替代品,能够自动解析并安装.deb包的依赖项。文章详细说明了系统更新、安装GDebi的步骤,并演示了通过GUI和CLI两种方式安装.deb包的操作流程。此外,还提供了验证安装和卸载包的方法。GDebi虽然非必需,但为用户提供了处理依赖项的另一种选择,适合需要安装本地Debian包的用户。

山岚的运维笔记 2003

复现论文《基于Retinex理论和深度学习的低照度图像增强算法研究》

本研究提出两种基于Retinex理论和深度学习的低照度图像增强算法。第一种算法在HSV色彩空间中进行处理,采用Res2Block和CBAM-Res2block模块增强多尺度特征表示;第二种算法使用多尺度残差U型网络结构。复现代码展示了Res2Block、CBAM注意力机制等核心模块的实现,包括多尺度特征提取、通道和空间注意力机制。实验结果表明,所提算法能有效解决低照度图像存在的亮度低、对比度不足、颜色失真和细节丢失等问题,显著提升图像质量。

max500600的博客 389

Python3 数据结构

Python 3 提供了多种内置数据结构,用于存储和操作数据。以下是对主要数据结构的概述,包括它们的特性、用途和常见操作,尽量简洁但全面

likuoelie的博客 945

吃透工业通信:C#工控机实现Modbus、OPC UA、Profinet、EtherCAT协议全适配

本文介绍了基于C#的工业通信协议全适配方案,采用分层架构设计实现Modbus、OPC UA、Profinet和EtherCAT四种主流协议的统一管理。核心包括:1)三层架构(应用层、抽象层、协议层)降低耦合;2)定义统一通信接口IIndustrialCommunication;3)工厂模式创建不同协议实例;4)以Modbus TCP为例展示具体实现。该方案经过实际项目验证,可简化多协议设备管理,提升工业自动化系统的开发效率。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 725

Python入门:Python3 数据结构全面学习教程

Python入门:Python3 数据结构全面学习教程,本文详细介绍Python3常用数据结构及遍历技巧。列表为可变序列,含丰富操作方法,可实现栈和队列,还可通过推导式及嵌套解析高效处理数据,del语句能删除元素或变量。元组是不可变序列,由逗号分隔值组成,可嵌套。集合为无序不重复元素集,支持关系测试和推导式。字典以键值对存储,关键字不可变且唯一,有多种构造方式。此外,还讲解了字典、序列等的遍历技巧,如用items()、enumerate()、zip()等函数,助力高效编程。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 13万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python3(19)数据结构

Python3 提供了丰富的数据结构,每种都有其独特的特性和适用场景。列表灵活可变,适用于需要频繁修改数据的场景;元组不可变,适合存储固定数据;集合用于去重和关系测试;字典以键值对存储,便于快速查找。掌握这些数据结构及其操作方法,以及各种遍历技巧,能帮助我们编写出更高效、简洁的 Python 代码。在实际编程中,应根据具体需求选择合适的数据结构,充分发挥它们的优势。希望这篇博客能帮助你系统复习 Python3 的数据结构知识,在编程实践中灵活运用。

Theodore_1022的博客 999

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python3基础学习(一)数据结构

Python3基础之数据结构

ddu-to-end的博客 1203

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python3数据结构菜鸟教程_Python3 基本数据结构总结

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。简介Python3基本数据结构有列表(list),元组(tuple),字典(dictionary)和集合(set)四种,结构如下:list = ['Google', 'Runoob', 1997, 2000]tup = ('Google', 'Runoob', 1997, 2000)dict = {...

weixin_40008135的博客 251

【20】Python3 数据结构

Python3 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构。 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。 以下是 Python 中列表的方法: 方法 描述 list.append(x) 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 li...

青崖梦 345

python的内置数据结构_Python3内置数据结构

Python3内置数据结构

weixin_39975868的博客 118

Python3 数据结构实例及演示

Python3 数据结构实例及演示

2301_76188245的博客 425

AS3与数据结构 转载

原文地址 AS3与数据结构时至今日国内外都还没有一本专讲AS3与数据结构的书,对于我这种非科班毕业的社会闲杂人等来说,入门数据结构太难了,我参考了各方代码,经过一段时间的恶补,整理了一下目前Flash开发中有可能遇得到的数据结构。完整代码在文章结尾有下载,如有错漏请直接指出谢谢。数组Array类应该是Flash里最常用的数据结构了。比其他语言的数组高级和灵活许多,随意装入任何数据类型,不用固定长度

不忘初心 方得始终 1653

python3 数据结构_19.Python3 数据结构

# Python3 数据结构## 列表列表与元组和字符串不同,它是可变的数据结构(序列)。以下是 Python 中列表的方法:~~~// list.append()In [1]: list1 = [1,2,3]In [2]: list1.append([4,5,6])In [3]: list1Out[3]: [1, 2, 3, [4, 5, 6]]// 另一种写法:list1[len(list1)...

weixin_27875131的博客 107

python3 数据结构_Python3快速入门(十三)——Pandas数据结构

Python3快速入门(十三)——Pandas数据结构一、Pandas数据结构简介Pandas有三种主要数据结构,Series、DataFrame、Panel。Series是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等),轴标签统称为索引(index)。DataFrame是带有标签的二维数据结构,具有index(行标签)和columns(列标签)。如果传递in...

weixin_39528366的博客 363

Python 3 数据结构

Python 是一种高级编程语言,因其简洁明了的语法和强大的功能而广受欢迎。在 Python 中,数据结构是组织和存储数据的方式,对于编写高效和可维护的代码至关重要。本文将深入探讨 Python 3 中的主要数据结构,包括列表、元组、集合和字典,并展示如何有效地使用它们。

wjs2024的博客 445
上一篇: 数据结构(2)
下一篇: python表达式和运算符
霁轩
博客等级 码龄5年 1粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值