Python_递归
2018-09-10 01:06:22来源:博客园 阅读 ()
递归:一种直接直接或者间接调用自身算法的过程
递归在调用的过程中,是在上一层循环还没有结束直接进入下一层,多层嵌套调用实现调用
例1:
1 def func(n): 2 print(n) 3 if n > 1: 4 t = func(n / 2) 5 print('T', t) # 当循环结束,会一层一层退出循环,退出一层打印一层 6 else: 7 print('已经是最小了') 8 print('N', n) 9 return n # 返回n 用于观察 T 退出循环 10 func(100)
结果:
100 50.0 25.0 12.5 6.25 3.125 1.5625 0.78125 已经是最小了 N 0.78125 T 0.78125 N 1.5625 T 1.5625 N 3.125 T 3.125 N 6.25 T 6.25 N 12.5 T 12.5 N 25.0 T 25.0 N 50.0 T 50.0 N 100
例2:裴波那契数列:(用递归实现)(0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987)
1 def num(x, y, stop): 2 if x+y < stop: # 递归数列结束值,如果没有条件限制会直接报错 3 # 因为过度的递归会造成栈溢出 4 z = x + y 5 print(z) 6 num(y, z, stop) 7 num(0, 1, 1000)
结果:
1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
二分算法:
1 def binary(binary_para, search): 2 bi = int(len(binary_para)/2) # 分为两部分 bi 为下标 3 if search == binary_para[0]: # 判断传入数是否为第一个 4 print('列表里存在,并且这是列表第一个数: %s' % search) 5 elif len(binary_para) > 1: # 利用递归不断二分 6 if binary_para[bi] > search: 7 print('分段值(前):', binary_para[bi]) # 打印分段的值 8 binary(binary_para[:bi], search) 9 elif binary_para[bi] < search: 10 print('分段值(后):', binary_para[bi]) 11 binary(binary_para[bi:], search) 12 else: 13 print('你找到了,列表里有这个数!!') 14 15 else: 16 print('这个列表里 没有 这个数!!') 17 18 19 if __name__ == '__main__': # 在自己.py文件里,可以运行,其他文件访问不运行此方法 20 size = list(range(4, 300000, 10)) # 区间(4,300000)间断10个数的列表 21 # binary(size, 1) 22 binary(size, 12138)
结果:
分段值(前): 150004 分段值(前): 75004 分段值(前): 37504 分段值(前): 18754 分段值(后): 9374 分段值(前): 14064 分段值(后): 11714 分段值(前): 12884 分段值(前): 12294 分段值(后): 12004 分段值(前): 12144 分段值(后): 12074 分段值(后): 12104 分段值(后): 12124 分段值(后): 12134 这个列表里 没有 这个数!!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:python并发编程之多线程
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash