python之递归与二分法
2018-12-13 08:57:09来源:博客园 阅读 ()
1. 递归
自己调用自己
递归的入口(参数) 和 出口(return)
树形结构的遍历
import os def func(lujing, n): lst = os.listdir(lujing) # 打开文件夹,列出所有文件 for el in lst: # el 每一个文件 path = os.path.join(lujing, el) # 还原路径 if os.path.isdir(path): # 判断是否是文件夹 print('\t'*n ,el) func(path, n + 1) else: print('\t' * n, el) func(r'E:\python_workspace_s18', 0)
2. 二分法
掐头结尾取中间
查找效率非常的高
# 二分法 lst = [1, 3, 5, 7, 13, 15, 17, 19, 21, 23, 27, 29, 31, 33, 39, 41, 43, 47, 49] left = 0 right = len(lst) - 1 count = 1 n = int(input("请输入一个数:")) while left <=right: middle = (left + right) // 2 if n > lst[middle]: left = middle + 1 elif n < lst[middle]: right = middle - 1 else: print('找到了') print('循环次数为:%s' % count) break count += 1 else: print('不存在') # 递归实现: lst = [1, 3, 5, 7, 13, 15, 17, 19, 21, 23, 27, 29, 31, 33, 39, 41, 43, 47, 49] def func(s, lst): left = 0 right = len(lst) - 1 if lst != []: middle = (left + right) //2 if n > lst[middle]: left = middle + 1 lst = lst[left:] func(s, lst) elif n < lst[middle]: right = middle -1 lst = lst[:right] func(s, lst) else: print('找到了') return else: print('没有找到') return n = int(input('请输入一个数:')) func(n, lst) # 递归二 lst = [1, 3, 5, 7, 13, 15, 17, 19, 21, 23, 27, 29, 31, 33, 39, 41, 43, 47, 49] def func(n, lst, left, right): if left <= right: middle = (left + right) // 2 if n > lst[middle]: left = middle + 1 return func(n, lst, left, right) elif n < lst[middle]: right = middle - 1 return func(n, lst, left, right) # 递归如果有返回值. 所有调用递归的地方必须写return else: print("找到了") return middle else: print('没有找到') return -1 n = int(input('请输入一个数:')) func(n,lst,0,len(lst)-1)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 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