python递归--通过栈找到数据

数据结构与算法(Python)——常见数据结构Part2(栈和递归) 写在前面 在上一节part1我们熟悉数组和链表,本节继续对其他常见数据结构进行总结。我们的目的是快速了解他们,对于它们涉及到的复杂的数据结构和算法,在这里并不全部展开,留在后期详述。 1. 栈 栈(stack)也是一种线性结构,与数组不同的是,栈限定了只能在线性表的一端,例如尾部进入插入或者删除操作(只允许头部操作类似)。 栈类似于把车开入了一个死胡同,只剩下一端,只能从这个入口进入或... 阅读详情
def twoSplit(sourceData,findData):
    sp=int(len(sourceData)/2)
    if sourceData[0]==findData:
        print('找到数据',sourceData[0])
    else:
        if findData in sourceData[0:sp]:
            print('数据在左边[%s]'%sourceData[0:sp])
            twoSplit(sourceData[0:sp],findData)
        elif findData in sourceData[sp:]:
            print('数据在左边[%s]'%sourceData[sp:])
            twoSplit(sourceData[sp:],findData)
        else:
            print('找不到数据')


data = [1,2,'c',3,4,5,6,7,8,17,26,15,14,13,12,11,'a','b']
twoSplit(data,3)
栈的应用:背包问题的递归解法 算法与数据结构的python语言描述这本书在介绍栈的一章,讲到任何一个递归函数都可以引入一个栈保存中间结果来改为非递归函数。从而讲到简单的背包问题的递归实现。任何具有递归性质的问题通过函数递归调用会变得很简单。一个很复杂的问题,几行代码就能搞定。 背包问题: 问题描述:一个背包里放入重量为weight的物品,现有n件物品的集合S,其中物品的重量为 w0,w1,...w(n-1)。问题是能否选出若干件物品,其重量之和正好等于weight。 递归树分析: 递归树 每次分为两种情况,一... 阅读详情

相关推荐

Python中的递归详解

在函数内部,可以调用其他函数。如果一个函数在内部自己调用自己,这个函数就是递归函数。必须由出口

景天科技苑 1万+

Python通过栈方式实现括号匹配

from pythonds.basic.stack import Stack """ 思路: 通过传入参数的长度进行遍历 从左到右依次取括号 如果是左括号, 则入栈 如果是右括号, 则从栈顶移除一个左括号 如果是右括号且栈内为空, 则不继续匹配并判定匹配失败 当所有遍历操作完成后栈内为空, 则括号成对匹配成功 """ def checker_brackets(brackets): """ 通过栈方式匹配括号是否成对出现 :param

BuLingLings的博客 1253

Zephyr RTOS详解

Zephyr 是一个开源的实时操作系统(RTOS),专为资源受限的嵌入式设备设计,支持多种架构(如 ARM Cortex-M、RISC-V、x86 等)。

weixin_43484713的博客 4106

算法入门学习——第三章:递归、栈、调用栈(Python实现)

第三章 递归 3.1 递归 引例: 假设你发现了一个上锁的箱子和一个盒子。钥匙可能在盒子里面,这个盒子里还有盒子,而盒子里的盒子又有盒子…(钥匙就在某个盒子中)为了找到钥匙,你将使用什么算法? 第1种方法: 1.创建一个要查找的盒子堆。 2.从盒子堆取出一个盒子,在里面找。 3.如果找到的是盒子,就会将其加入盒子堆中,以便以后再查找。 4.如果找到钥匙,则大功告成。 5.回到第2步。 第2种方法: 1.检查盒子中的每样东西。 2.如果是盒子就回到第1步。 3.如果是钥匙就大功告成。 在你看来哪一种方法更容易

fzy2003的博客 1067

Pcileech(DMA)开源项目简述

希望大DMA家能正确认识FPGA,正确使用DMA技术,对于市场上各类伪装成花里胡哨设备的FPGA板卡它的本质是不会变的,不要上当受骗。

2301_79773847的博客 5961

告别ArcGIS小红叉:从‘无法验证登录信息’到成功连接在线资源的完整排错记录

本文详细记录了从Windows便签的网络错误到ArcGIS连接问题的完整排错过程。通过分析代理服务器、DNS配置和系统网络设置,解决了ArcGIS无法验证登录信息的问题,提供了实用的网络优化方案和技术排错思路。

weixin_26800111的博客 390

递归调用栈附带python附带源码

一城;一风;一烟一雨;一楼台。 点赞三连关注,原创不容易。 系列文章目录 提示:算法之递归调用栈的写法,本篇文章主要以递归调用栈写作为主,使用的主语言是python。 文章目录系列文章目录一、递归调用栈算法原理是什么?1.递归调用栈算法介绍2.递归调用栈图解简介二、 选择排序代码的基本实现方法1.选择排序算法实现方法(1) 一、递归调用栈算法原理是什么? 1.递归调用栈算法介绍        栈:一种数据结构,相当于一个盒子装书,先装进去

m0_46904983的博客 813

【漏洞复现】CVE-2024-44902 Thinkphp反序列化漏洞

Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞,攻击者可利用此漏洞执行任意代码。

渗透之路,攻防之间皆学问 6709

Python 递归错误修复策略:5 种技术解析

Python是一门备受欢迎的编程语言,以其简洁易读和多功能特性而著称。在Python编程中,递归是一个常用的技术,允许函数调用自身,为复杂问题提供了清晰而简洁的解决方案。然而,递归也容易陷入一些常见的错误。在本文中,我们将深入探讨如何修复和避免这些Python递归错误,并提供相应的代码示例和解释。

mate1357的博客 1445

Qoder Work vs Lobster AI:办公AI工具深度对比(2026年2月更新)

Qoder Work = 本地安全的“文件管家”Lobster AI = 混合智能的“办公全能助手”选择逻辑:隐私优先→选Qoder Work;效率优先→选Lobster AI。

lpfasd123的博客 1045

SAP 成本分摊逻辑与案例(含具体数据)

摘要: SAP成本分摊通过**分配(Allocation)与分摊(Assessment)**两种方式,将间接成本中心费用按预设规则(如人数、工时、比例等)结转至直接成本对象。分配保留原始成本要素(如电费、工资),适用于需明细追踪的场景;分摊则打包为次级成本要素(如管理费用),简化核算。实操案例涵盖行政费用分配(按人数)、水电车间分摊(按工时)、机修作业分摊(作业成本法)及内部订单结算,系统通过KSV1/KSU1配置循环规则,KSV5/KSU5执行结转。关键点在于选择匹配业务的分摊基础,合理配置次级成本要素,

金牌架构师 550

python(十一)——递归、栈结构、队列、深度遍历、广度遍历

目录 递归 写递归方式: 模拟栈结构 队列 递归遍历目录 栈模拟递归遍历目录(深度遍历) 队列模拟递归(广度遍历) 递归 递归调用:一个函数,如果调用了自身,这种调用称为递归调用,一个会调用自身的函数称为递归函数 凡是循环能做的,递归都能做 写递归方式: 写出临界条件 找这一次和上一次的关系 假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果 ...

苦作舟的空城机 1597

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

技术分享 1724

Python DAY 10 函数进阶

Python DAY 10 函数进阶 知识点总结 一 装饰器 [掌握] 概述 如果一个函数需要增加功能 却不改变函数内部 我们可以使用装饰器 在代码运行期间 可以增加函数的功能的方式 我们成为装饰器 也就是说 在不修改原函数的基础上 给函数增加新功能 好处:在团队开发中 如果两个或者两个以上的程序员会用到相同的功能 但是功能又有细微的差别 采用装饰器:互不影响 代码简化 使用 简单的装饰器 def text(): print('123') def outer(func): def inn

Galahad_Lin的博客 365

ComfyUI 局部重绘工作流示例

本文介绍了使用ComfyUI进行图像局部重绘的基础工作流程,重点讲解如何修改人物眼睛颜色和表情。主要内容包括:1.准备工作(可选下载DreamShaperv8模型);2.加载素材图片和工作流文件;3.使用遮罩编辑器绘制需要修改的区域;4.修改提示词控制生成内容;5.调整denoise参数优化效果。教程提供了详细的提示词示例(如"smile,blackeyes"等)和参数设置建议,帮助用户通过多次尝试获得理想效果。该工作流适用于修改图像局部区域而不影响整体画面。

云域A的博客 331

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何使用栈非递归地求解Ackerman函数

Ackerman 函数如下: 如果用递归算法求 A(m, n) 非常简单: int Ackerman(m, n) { if(m==0) return n+1; else if(m>0 && n==0) return Ackerman(m-1, 1); else if(m>0 && n&gt...

一个女程序员的博客 6206

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python中的递归函数与栈限制

本文将深入探讨 Python 中递归函数的工作机制、调用栈的构造与限制、常见的递归陷阱、优化策略(如尾递归、递归转迭代、缓存)、性能分析及实际工程实践。希望读者不仅掌握“如何递归”,更能够理解“为何递归受限”与“何时该避免递归”。

测试者家园 1169

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数据结构与算法之Python实现——栈

用Python实现顺序栈、链栈,括号匹配、中缀表达式转换后缀表达式以及计算后缀表达式等算法,每一步都是详细的讲解,你确定不来看看吗

weixin_62917800的博客 1万+

算法入门——递归与栈

目录 递归 栈 栈的操作 调用栈 python中实现一个栈 总结 递归 什么是递归?递归就是方法自己调用自己。比如下面这个例子 def fun(n): print(n) fun(n-1) if __name__ == '__main__': fun(10) 它就是个递归函数,但是你会发现它会一直运行下去 10 9 8 7 6 ..... 但这样就会导致很多错误,我想没人会要一个无线循环的函数吧,所以我们需要有跳出循环的条件,正因为如此,每个递归函...

qq_55977554的博客 3437

Python 递归函数

递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归函数特性: 必须有一个明确的结束条件; 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实...

一起学习 10万+

算法图解part3:递归&栈

算法图解part3:递归&栈1.什么是递归2.基线条件和递归条件3.递归与循环4.栈(Stack)4.1调用栈4.2递归调用栈5.总结6.参考资料 1.什么是递归 百度百科 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规...

catkin_ws的博客 4240

Python旅途——函数的递归和栈的使用

Python——函数之递归、栈的使用 今天主要和大家分享函数的递归,同时引入一个新的概念——栈 1.递归 1.定义 函数的递归指的就是函数自己调用自己,什么是函数自己调用自己呢?我们来看一个栗子: 这里给大家一个数学中的一个数列:斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6...

weixin_30407613的博客 402

数据结构——30行代码实现栈和模拟递归

本文始发于个人公众号:TechFlow,原创不易,求个关注 栈的定义 原本今天想给大家讲讲快速选择算法的,但是发现一连写了好几篇排序相关了,所以临时改了题目,今天聊点数据结构,来看看经典并且简单的数据结构——栈。 栈这个结构我想大家应该都耳熟能详,尤其是在很多地方将和堆并列在一起,称作“堆栈”就更广为人知了。但其实堆和栈本质上是两种不同的数据结构,我们不能简单地混为一谈。让我们先从比较简单的栈...

TechFlow的博客 451

python中栈、队列和递归的实现与总结

引言 在数据结构中有一个大类,叫做线性表,线性表的划分是从数据的逻辑结构上进行的。线性指的是在数据的逻辑结构上是线性的。那么对于线性表,从存储结构上分,可以有顺序存储结构和链式存储结构。顺序存储结构包括顺序表、顺序队列和顺序栈;链式存储结构包括链表、链队列和链栈。本篇博客就是基于所有这些分类数据结构的总结与实现,而因为上一篇已经总结过了顺序表和链表,那么接下来便开始正式进入介绍。 关于栈和队列的说...

submarineas的博客 2264

数据结构与算法——栈与递归

栈与递归 栈是我们经常使用的一种数据结构,如下图所示,手枪发射子弹的顺序与子弹压入弹夹的顺序是相反,即后压入弹夹的子弹先发射出来。 比如我们使用的Word、Excel、Photoshop等软件系统中的撤销操作,也是栈的具体应用,最后做的操作,一定是最先撤销的。下面我们就来详细介绍“栈”这种数据结构。 栈的定义与操作 1.1 栈的定义 插入(入栈)和删除(出栈)操作只能在一端(栈顶)进行的线性表。即先进后出(First In Last Out)的线性表。 例1 :线性表(a0,a1,…,an) 进栈与出栈演

聆听雨de旋律 1167

如何仅用递归函数和栈操作逆序一个栈(python)

# 如何仅用递归函数和栈操作逆序一个栈 def getAndRemoveLastElement(stack): '''将栈stack的栈底元素返回并移除''' result = stack.pop() if not stack: return result else: last = getAndRemoveLastElement...

qq_40431898的博客 827
上一篇: smtp发送邮件
下一篇: IPC(进程间通信)简单了解
qq_27110607
博客等级 码龄12年 7粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值