数据结构--递归和数组

个人介绍

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
在这里插入图片描述
🦁作者简介:一名喜欢分享和记录学习的在校大学生
💥个人主页:code袁
💥 个人QQ:2647996100
🐯 个人wechat:code8896

专栏导航

code袁系列专栏导航
1.毕业设计与课程设计:本专栏分享一些毕业设计的源码以及项目成果。🥰🥰🥰
2.微信小程序开发:本专栏从基础到入门的一系开发流程,并且分享了自己在开发中遇到的一系列问题。🤹🤹🤹
3.vue开发系列全程线路:本专栏分享自己的vue的学习历程。

非常期待和您一起在这个小小的互联网世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨ 

在这里插入图片描述

在这里插入图片描述

1、 什么是递归?

递归是一种解决问题的方法,它通过将问题分解为更小的子问题来解决。在递归过程中,函数会调用自身来处理这些子问题,直到达到最简单的情况(基本情况),然后逐层返回结果,最终解决原始问题。

递归的特点

递归函数通常具有以下特点:

  • 基本情况:递归函数必须包含一个或多个基本情况,用于结束递归过程。
  • 递归调用:递归函数会调用自身来处理子问题。
  • 递归链:递归函数的调用形成一个递归链,直到达到基本情况。

递归的应用

递归在计算机科学中有着广泛的应用,比如:

  • 树和图的遍历:递归常用于树和图的遍历算法中,如深度优先搜索(DFS)。
  • 分治法:递归可用于分治法,将问题分解为更小的子问题来解决。
  • 动态规划:一些动态规划问题也可以通过递归方式解决。

递归的例子

1. 计算阶乘

def factorial(n):if n == 0:return 1else:return n * factorial(n-1)result = factorial(5)
print(result)  # Output: 120

2. 斐波那契数列

def fibonacci(n):if n <= 1:return nelse:return fibonacci(n-1) + fibonacci(n-2)result = fibonacci(6)
print(result)  # Output: 8

2、什么是数组?

数组是一种数据结构,用于存储相同类型的数据元素。数组中的元素通过索引访问,索引通常从0开始。数组在内存中是连续存储的,可以快速访问任何位置的元素。

数组的特点

  • 固定长度:数组具有固定的长度,一旦创建,长度通常不可更改。
  • 随机访问:可以通过索引快速访问数组中的任何元素。
  • 相同类型:数组中的元素通常是相同类型的。

数组的例子

# 创建一个整数数组
arr = [1, 2, 3, 4, 5]# 访问数组元素
print(arr[2])  # Output: 3# 修改数组元素
arr[1] = 10
print(arr)  # Output: [1, 10, 3, 4, 5]

3、 什么是广义表?

广义表是一种数据结构,可以包含原子元素(如整数、字符等)和子表(也是广义表)。广义表可以是嵌套的,允许在一个广义表中包含另一个广义表。

广义表的特点

  • 嵌套结构:广义表可以是嵌套的,允许在一个广义表中包含另一个广义表。
  • 灵活性:广义表可以包含不同类型的元素,包括子表。
  • 递归定义:广义表的定义可以通过递归方式来描述。

广义表的例子

# 创建一个广义表
general_list = [1, [2, 3], 4, [5, [6, 7]]]# 访问广义表元素
print(general_list[1])  # Output: [2, 3]# 访问嵌套广义表元素
print(general_list[3][1][0])  # Output: 6

🎉写在最后

🍻伙伴们,如果你已经看到了这里,觉得这篇文章有帮助到你的话不妨点赞👍或 Star ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

你的支持就是我更新的最大动力💪~
在这里插入图片描述

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

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

相关文章

10.邮票问题

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/625 题目描述 有四种面值的邮票,分别是 …

使用 Django 创建 App

文章目录 步骤 1&#xff1a;创建 Django 项目步骤 2&#xff1a;创建 App步骤 3&#xff1a;配置 App步骤 4&#xff1a;编写代码步骤 5&#xff1a;运行服务器 在 Django 中&#xff0c;App 是组织代码的基本单元&#xff0c;它可以包含模型、视图、模板等组件&#xff0c;帮…

树1----7-3 列出叶结点

对于给定的二叉树&#xff0c;本题要求你按从上到下、从左到右的顺序输出其所有叶结点。 输入格式&#xff1a; 首先第一行给出一个正整数 n&#xff08;≤10&#xff09;&#xff0c;为树中结点总数。树中的结点从 0 到 n−1 编号。随后 n 行&#xff0c;每行给出一个对应结…

Web前端编程网站:探索编程世界的新窗口

Web前端编程网站&#xff1a;探索编程世界的新窗口 在数字化时代的浪潮中&#xff0c;Web前端编程网站如雨后春笋般涌现&#xff0c;为编程爱好者们打开了一扇探索编程世界的新窗口。这些网站不仅提供了丰富的学习资源&#xff0c;还搭建了一个交流与分享的平台&#xff0c;让…

git版本控制工具常用命令

一、本地仓库管理 push 向远程推送代码 pulll 拉取代码 二、远程仓库管理 三、分支操作 本地主分支master 远程主分支main head指向当前分支 查看&#xff1a;git branch 创建分支: git branch 名字 切换分支&#xff1a;git checkout 名字 合并分支&#xff1a;git…

FPGA SPI采集ADC7606数据

一,SPI总线的构成及信号类型 SPI总线只需四条线(如图1所示)就可以完成MCU与各种外围器件的通讯: 1)MOSI – Master数据输出,Slave数据输入 2)MISO – Master数据输入,Slave数据输出 3)SCK – 时钟信号,由Master产生 4)/CS – Slave使能信号,由Master控制。 在一个SPI时…

gdb调试器

目录 一、前言 debug和release 二、调试操作 2.1、退出 quit 2.2、调试 run 2.3、打断点 b 2.4、查看断点 info b 2.5、查看代码 l 2.6、删除断点 d 2.7、逐过程 n 2.8、打印变量内容 p 2.9、逐语句&#xff08;进入函数&#xff09; s 2.10、查看函数调用堆栈 …

Spring (47)如何在Spring Cloud中实现服务发现

在Spring Cloud中&#xff0c;服务发现的功能通常是通过Eureka、Consul或Zookeeper等服务发现工具来实现的。这些工具提供了运行时的服务注册、发现和健康检查等功能。我们将以Eureka为例来深入解析如何在Spring Cloud中实现服务发现。 Eureka的核心概念 Eureka Server: 服务…

【GD32F303红枫派使用手册】第十一节 ADC-电源电压单通道ADC检测实验

11.1 实验内容 通过本实验主要学习以下内容&#xff1a; ADC的简介 GD32F303 ADC工作原理 查询方式实现ADC单通道采样 11.2 实验原理 11.2.1 ADC原理 我们知道&#xff0c;自然界中有非常多的模拟信号&#xff0c;比如上一节提到的光照强度&#xff0c;还有其他的例如温…

Python的动态类型系统是什么

Python的动态类型系统是指Python语言在运行时确定变量类型的一种特性&#xff0c;而非在编译时。以下是关于Python动态类型系统的详细解释&#xff1a; 动态类型的定义&#xff1a; 动态类型指的是在运行时&#xff0c;变量的数据类型可以根据其赋值的内容动态确定。这与静态类…

RTOS笔记--任务通知+软件定时器

任务通知的本质 对于之前使用过的几种互斥操作方式队列&#xff0c;互斥量&#xff0c;信号量&#xff0c;事件组&#xff0c;他们都是黑箱操作&#xff0c;对于写入和读取的任务来说并不知道对方是哪个任务&#xff0c;只是操作环形缓冲区和链表。 而任务通知的方式就是通知方…

LeetCode-day07-312. 戳气球

LeetCode-day07-312. 戳气球 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 有 n 个气球&#xff0c;编号为 0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&#…

【CS.AL】算法复杂度分析 —— 时间复杂度详解

文章目录 1 概述2 时间复杂度的详细分析2.1 常数时间复杂度&#xff08;O(1&#xff09;&#xff09;2.2 对数时间复杂度&#xff08;O(log n)&#xff09;2.3 线性时间复杂度&#xff08;O(n)&#xff09;2.4 线性对数时间复杂度&#xff08;O(n log n)&#xff09;2.5 平方时…

程序的基本结构、cout语句(c++语言)

一、如何下载Dev C 登录网站&#xff1a;ht.51goc.com 二、安装Dev C 一、启动Dev C 双击桌面的图标 二、新建一个程序 三、复制一个程序 请你复制以下代码到“程序编辑区” #include<bits/stdc.h> using namespace std; int main() { cout<<"Hell…

详解MySQL完整性约束

完整性约束条件是对字段进行限制&#xff0c;要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件&#xff0c;数据库系统将不再执行用户的操作。MySQL 完整性约束常用的操作有六大操作&#xff1a; 主键约束唯一约束 unique非空 not null默认值约束(default…

计网仿真综合实验 实验十二

实验十二 综合网络实验 实验过程 IP配置说明参考连线配置OSPF使公司内部联通 路由器R1的OSPF配置路由器R2的OSPF配置路由器R3的OSPF配置R1、R2、R3的相关解释路由器R4的OSPF配置路由器R5的OSPF配置路由器R6的OSPF配置R4、R5、R6解释: 路由器R2的RIP配置路由器R7的RIP配置 总结 …

MicroPython esp32 连接wifi 配网

整体流程&#xff1a; 1&#xff09;开启STA 和 AP 模式 2&#xff09;扫描周围wifi 保存在 变量 wifi_list&#xff08;后面要用到&#xff09; 3) 尝试STA模式连接Wifi&#xff0c;并查寻状态。 4) 如果STA 无法连网&#xff0c;就用AP模式&#xff0c;创建热点。 5&a…

Radash 轻量级的函数工具集

Radash 是一个现代的 JavaScript 实用程序库&#xff0c;旨在提供高效、轻量级的函数工具集&#xff0c;类似于 Lodash&#xff0c;但更加现代化和模块化。Radash 通过提供一系列常用的工具函数&#xff0c;帮助开发者更轻松地处理数组、对象、函数等操作。 以下是一些 Radash…

Python中的列表(List)和元组(Tuple)的区别

在Python中&#xff0c;列表&#xff08;List&#xff09;和元组&#xff08;Tuple&#xff09;都是常用的数据结构&#xff0c;用于存储一系列的元素。然而&#xff0c;它们在多个方面存在着显著的区别。下面将从技术难点、面试官关注点、回答吸引力和代码举例四个方面来详细解…

【lesson1】第三方库(jsoncpp,bundle, httplib)的介绍和使用

文章目录 jsoncpp库json 认识jsoncpp 认识jsoncpp 实现序列化jsoncpp 实现反序列化 bundle库bundle库实现文件压缩bundle库实现文件解压缩 httplib 库httplib 库搭建简单服务器httplib库搭建简单客户端 jsoncpp库 json 认识 json 是一种数据交换格式&#xff0c;采用完全独立…