python递归_python3之递归

1、递归的特点

递归算法是一种直接或间接调用自身算法的过程,在计算机编程中,递归算法对解决一大类问题是十分,它往往使算法的描述简洁而且易于理解。

递归算法解决问题的特点:

(1)递归就是在过程或函数里调用自身

(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

(3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低,所以一般不提倡用递归算法设计程序。

(4)在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储,递归次数过多容易造成栈溢出等。

2、递归的要求

递归算法所体现的“重复”一般有三个要求:

(1)每次调用在规模上都有所缩小(通常是减半)

(2)是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出作为后一次的输入)

(3)在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模位达到直接解答的大小为条件)无条件递归调用将会成为死循环而不能正常结束。

简单的递归函数实例:

def recursion(i): #定义函数

print(i)if i/2 > 1: #判断递归条件,退出

re = recursion(i/2) #递归函数自身

print('返回值:',re)print('上层递归值:',i)return i #返回值

recursion(10)#运行原理:首先运行函数传参10给函数,打印10,判断条件满足,递归#函数参数值为(10/2)5,打印i的值5,等递归到1.25时,判断条件不满#足后,才打印上层递归的值,此时递归的值为1.25,return递归最后一#层的值1.25,退出最后一层递归,继续一层层退出递归,最后返回最上层#递归值结束函数。

10

5.0

2.5

1.25上层递归值:1.25返回值:1.25上层递归值:2.5返回值:2.5上层递归值:5.0返回值:5.0上层递归值:10

斐波那契数列:就是前两个数的和为后一个数的值(0,1,1,2,3,5,8,13.........)

deffoo(arg1,arg2,stop):if arg1 ==0:print(arg1,arg2)

arg3= arg1 +arg2print(arg1,arg2,arg3)if arg3 < stop: #判断套件不满足时退出递归

foo(arg2,arg3,stop) #递归函数,传送参数arg2,arg3,stop给arg1,arg2,stop

foo(0,1,50)

0101 1

1 1 2

1 2 3

2 3 5

3 5 8

5 8 13

8 13 21

13 21 34

21 34 55

利用切片递归方式,查找数据:

deftwosplit(sourceDate,findData):

sp= int(len(sourceDate)/2) #序列长度

if sourceDate[0] ==findData:print('找到数据:',sourceDate[0])return0else:if findData in sourceDate[:sp]: #判断在左边

print('数据在左边[%s]' %sourceDate[:sp])

twosplit(sourceDate[:sp],findData)#递归函数

elif findData in sourceDate[sp:]: #判断在右边

print('数据在右边[%s]' %sourceDate[sp:])

twosplit(sourceDate[sp:], findData)else:print('找不到数据')if __name__ == '__main__':

data= [1,2,'c',3,4,5,6,7,8,17,26,15,14,13,12,11,'a','b']#data = list(range(1000000))

twosplit(data,'c')

二位数组,顺时针90度数据调换:

a = [[col for col in range(4)] for row in range(4)]for i in a:print(i) #打印二维数组

print('--------------------')for lf,rig in enumerate(a): #循环数组,打印数组下标和元素

for cf in range(lf,len(rig)): #从下标数组开始循环到列表长度

tmp = a[cf][lf] #存储列表元素中的元素

a[cf][lf] =rig[cf]

a[lf][cf]=tmpprint('+++++++++++++++++')for i in a:print(i)'''#另一种方法

for i in range(len(a)):

ai = [a[i][i] for row in range(4)]

print(ai)'''

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

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

相关文章

什么原因导致芯片短路_PCB电路板短路的原因及解决方法-EDA/PCB-与非网

【导读】焊接短路(如&#xff1a;连锡)、PCB 短路(如&#xff1a;残铜、孔偏等)、器件短路、组装短路、ESD/EOS 击穿、电路板内层微短路、电化学短路(如&#xff1a;化学残留、电迁移)、其他原因造成的短路。首先&#xff0c;了解一下常见的电路板短路的种类&#xff1a;短路按…

html表格按钮相对位置不变,表格中如何使td或div相对定位在某一行上面

有个需求&#xff0c;就是点击表格某一行&#xff0c;上面要居中显示一组菜单。而列表需要有1列或多列不固定宽度&#xff0c;有的是百分比宽度&#xff0c;有的是固定宽度(就是传统的table用法&#xff0c;或者CSS3的Flex Box)小伙伴的实现是用table&#xff0c;js算出距表头的…

python远程监控jvm_python和jstat命令采集jvm数据导入zabbix监控-阿里云开发者社区

利用python和jstat命令采集jvm数据注&#xff1a;用法运行python jvcheck.py 变量如EC或E等#codingutf-8#authoryangzai# 用jstat检查jvm信息然后用zabbix监控import commandsimport sysjvmvarssys.argv[1](status, PID) commands.getstatusoutput("sudo -u tomcat jps|g…

pythonstdin_如何写入Python子进程'stdin?

下面是它的样子对NUKE 11.3v4的商业版本Windows 10&#xff1a;import subprocess# Run NUKEs script in Terminal mode on Windows machine...subprocess.Popen([C:/Program Files/Nuke11.3v4/Nuke11.3.exe, -t, E:/NukeTest/test.nk], stdinPIPE, stdoutPIPE) 以下是NUKE 11.…

html信号动画,HTML5 Canvas火箭着陆和雷达信号动画

JavaScript语言&#xff1a;JaveScriptBabelCoffeeScript确定let canvas document.querySelector(canvas);let ctx canvas.getContext(2d);canvas.width document.body.clientWidth;canvas.height 150;let centerX canvas.width / 2;let centerY canvas.height / 2;let l…

python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...

今天给大家分享一位前辈整理的一个Python web学习路线。这位前辈由于有编程基础&#xff0c;所以采用了自学Python的方式。学完后主要做后端开发。希望对你有所启发。 整理的一个 python web 学习路线&#xff0c;这基本就是笔者自学后做后端的学习路线。入门基础 编程语言: Py…

html filter 在线预览,HTML Filter

HTML Filter05/31/20182 分钟可看完本文内容NoteIndexing Service is no longer supported as of Windows XP and is unavailable for use as of Windows 8. Instead, use Windows Search for client side search and Microsoft Search Server Express for server side search.…

xftp6设置默认打开文件的程序_xftp6如何使用?xftp6传输文件的使用详细方法--系统之家...

xftp6是一款功能强大主要用于SFTP、FTP 文件传输的软件&#xff0c;能够帮助用户安全地在 UNIX/Linux 和 Windows PC 之间传输文件。很多小伙伴下载了软件后对于xftp6怎么使用不太清楚&#xff0c;下面小编就把xftp6使用详细方法分享给大家&#xff01;Xftp6使用方法&#xff1…

如何把meshlab中的圆环去掉_如何设计一座太空城?

整整半个世纪前的今天&#xff0c;1969年7月20日&#xff0c;执行阿波罗11号计划的美国宇航员阿姆斯特朗和奥尔德林登上月球。而同一年&#xff0c;伍德斯托克音乐节的舞台前聚集了几十万名追求和平与爱的青年。在神奇的1969年&#xff0c;人类文明向着更为广袤与深邃的境地突飞…

axure html 360安装扩展,win10系统360浏览器添加Axure扩展的操作方法

win10系统360浏览器添加Axure扩展的操作方法?很多win10用户在使用电脑的时候&#xff0c;会发现win10系统360浏览器添加Axure扩展的的现象&#xff0c;根据小编的调查并不是所有的朋友都知道win10系统360浏览器添加Axure扩展的的问题怎么解决&#xff0c;不会的朋友也不用担心…

unity自动生成敌人_Unity 3D做2D坦克大战--敌人自动攻击AI编写

敌人AI攻击方法的编写老师 | Trigger学习者 |小白出品 | Siki 学院javapublic class Enemy : MonoBehaviour{//属性值public float movespeed 3;private Vector3 bullectEulerAngles;private float v -1;private float h;//引用private SpriteRenderer sr;public Sprite[] ta…

python删除txt指定内容_使用Python删除文本文件中的部分内容 | 学步园

为了学习英语&#xff0c;我把从网上下载下来的电影转换成纯MP3文件&#xff0c;放到iTouch里去了&#xff0c;这样就可以直接练习听力了&#xff0c;另外把下载下来的字幕也放进去&#xff0c;听不懂的时候可以看&#xff0c;但有一个问题&#xff0c;网上载下来的字幕格式都如…

电信计算机知识考试,2020中国电信考试试题——专业知识一

1、我国对独立型STP设备要求其信令链路数不得小于( )A、7000MSU/s&#xff1b;B、10000MSU/s&#xff1b;C、14000MSU/s&#xff1b;D、20000MSU/s2、GSM的多址方式为( )A、FDMA&#xff1b; B、TDMA&#xff1b; C、CDMA&#xff1b; D、FDMA-TDMA混合技术3、以下属于被叫控制…

vue实现进度条隐藏_实现带有进度条的Vue延迟加载

下面Vue.js栏目给大家介绍一下给Vue的惰性加载添加进度条的方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。简介通常用 Vue.js 编写单页应用(SPA)时&#xff0c;当加载页面时&#xff0c;所有必需的资源(如 JavaScript 和 CSS 文…

full outer join 与full join的区别_sleep、yield、join都是干啥的? sleep与wait有啥区别?中篇[十五]...

点击上方 “ 布衣码农 ” &#xff0c;免费订阅~选择“ 设为星标 ”&#xff0c;第一时间免费获得更新~「布衣码农」用不到却又不得不学习了解的底层方法1。Object中的wait、notify、notifyAll&#xff0c;可以用于线程间的通信&#xff0c;核心原理为借助于监视器的入口集与等…

npu算力如何计算_异构计算神器来了,它能带来性能革命吗

前言&#xff1a;优化差有多要命&#xff1f;3A大作告诉您说到最近游戏圈子里的热门话题&#xff0c;刚刚在全平台上线的某“国产3A大作”显然绝对值得一提。一方面来说&#xff0c;靠着“抽卡化单机游戏”的设计&#xff0c;以及投入几十万元都难以实现全角色满状态的高氪金程…

四川大学计算机专业贵州分数线,四川大学2016年在贵州省高考各专业录取分数线...

四川大学2016年在贵州各专业录取分数线省份 科类 录取专业 录取最高分 录取最低分 录取平均分贵州 文科 旅游管理类 640 639 639.5贵州 文科 历史学类 641 636 639贵州 文科 新闻传播学类 645 639 641.33贵州 文科 信息资源管理 640 637 638.5贵州 文…

画股票图csdn_这个股票今天是要弄啥?

点击上方蓝色字体&#xff0c;关注我们作者 | 四叶草编辑 | 易小投大盘点评今天市场上午走势相对弱势&#xff0c;盘中只有杀出一点点急跌的恐慌盘&#xff0c;有一些盘中的做T机会&#xff0c;但是确定性不是特别高&#xff0c;毕竟盘中的急跌相对幅度有限。下午指数随着一些概…

python创建字符串数组_如何创建任意长度字符串的numpy数组?

您可以通过创建dtype object数组来完成此操作.如果您尝试将长字符串分配给普通的numpy数组,它会截断字符串&#xff1a; >>> a numpy.array([apples, foobar, cowboy]) >>> a[2] bananas >>> a array([apples, foobar, banana], dtype|S6) 但是当…

淮阴工学院计算机学院机房,实验室开放

计算机工程实验中心坚持每天14小时开放(7:30-21:30)&#xff0c;在完成基础和专业等实验教学任务外&#xff0c;还承担了各级各类培训及考试、计算机技能实训、工程设计与开发等任务&#xff0c;同事开展了多种形式的社会服务&#xff0c;以及对周边学校的服务。本中心每天坚持…