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)

最新文章

  1. static修饰符
  2. DS-5建工程
  3. 安装和使用elasticsearch
  4. openssl使用多种方法签名、自签名
  5. ReportViewer报表
  6. 使用engine关键字指定该表使用哪个engine
  7. maven安装仓库中不存在的jar包
  8. SAP BW顾问如何保持市场竞争力
  9. textField:shouldChangeCharactersInRange:replacementString:
  10. stl_map,set 用法
  11. Ural 1450 求最长路 SPFA
  12. python基础(9):文件处理
  13. MySQLzip archive版本(5.7.19)安装教程
  14. DataContractJsonSerializer序列化时间类型时转换为UTC溢出问题
  15. 用C++向一个txt文档中写数据
  16. java基础(二)-----java的三大特性之继承
  17. 基于PLC1850平台的ARP包请求与响应
  18. 免费开源.net的pdf操作控件PdfiumViewer
  19. Spring(2)—IOC
  20. Ubuntu 14.03 安装jdk

热门文章

  1. 项目Alpha冲刺(团队3/10)
  2. ELK实战(Springboot日志输出查找)
  3. Jmeter HTTP请求后响应数据显示乱码解决方法
  4. 声反馈抑制使用matlab/simulink仿真
  5. python实现桶排序算法
  6. java中微信统一下单采坑(app微信支付)
  7. Cellular Traffic Offloading
  8. go 通过http发送图片file内容
  9. Android应用系列:双击返回键退出程序
  10. salesforce lightning零基础学习(九) Aura Js 浅谈二: Event篇