一 . 递归

   自己调用自己, 递归的入口(参数)  和  出口(return),  树形结构的遍历.

def func():
print("我是递归")
func()
func() 树形结构的遍历
import os def func(lujing, n): # "d:/a/"
lst = os.listdir(lujing) # 打开文件夹. 列出该文件夹内的所有文件名
for el in lst: # el是文件的名字. b, c
# 还原文件路径
path = os.path.join(lujing, el) # "d:/a/b"
if os.path.isdir(path): # 判断路径是否是文件夹
print("..." * n,el) # 显示文件夹的名字
func(path, n + 1) # 在来一次 ################
else:
print("\t" * n,el) # 显示文件
func("d:/a", 0)

二 . 二分法

  掐头结尾取中间, 查找效率非常的高

二分法查找
lst = [1,3,5,7,12,36,68,79]
n = int(input("请输入一个数"))
left = 0
right = len(lst) - 1
while left <= right:
mid = (left + right)//2
if n > lst[mid]:
left = mid + 1
elif n < lst[mid]:
right = mid - 1
else:
print("存在")
break
else:
print("不存在")

  用递归方法查找(第一种)

def func(n, lst):
left = 0
right = len(lst) - 1
if lst != []:
mid = (left + right)//2
if n > lst[mid]:
func(n, lst[mid+1:]) # 改变列表
elif n < lst[mid]:
func(n, lst[:mid])
else:
print("找到了")
return
else:
print("没找到")
return
n = int(input("请输入你要查找的数:"))
func(n, [1,3,5,7,12,36,68,79])

  用递归方法查找(第二种)

def func(n, lst, left, right): # 递归找到什么是可以变的. 什么是不可以变的
if left <= right:
mid = (left + right) // 2
if n > lst[mid]:
left = mid + 1
return func(n, lst, left, right)
elif n < lst[mid]:
right = mid - 1
return func(n, lst, left, right) # 递归如果有返回值. 所有调用递归的地方必须写return
else:
print("找到了")
return mid # 难点
else:
print("找不到")
return -1
n = int(input("请输入你要查找的数:"))
lst = [1,3,55,98,37,41,2,5,1,4]
ret = func(n, lst, 0, len(lst)-1)
print(ret)

  

  

python之路--递归, 二分法的更多相关文章

  1. 百万年薪python之路 -- 递归

    递归(每当有一个函数被递归调用,就应该要有一个返回值,才能正常把递归的返回值'归'回来) 一个正经的递归: ​ 1.不断调用自己本身 ​ 2.有明确的结束条件 递归注重于"一递 一归&quo ...

  2. python之路递归、冒泡算法、装饰器

    map使用 完整用户名登录,注册 冒泡排序 递归 def func(arg1,arg2): if arg1 == 0: print arg1, arg2 arg3 = arg1 + arg2 prin ...

  3. Python之路Python全局变量与局部变量、函数多层嵌套、函数递归

    Python之路Python全局变量与局部变量.函数多层嵌套.函数递归 一.局部变量与全局变量 1.在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量.全局变量作用域是整个程序,局 ...

  4. Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n ...

  5. 【python之路23】递归

    1.递归的基础 举例说明:老师要班里坐在最后的一排学生要一本书,老师对前面的人说你向最后一排的同学要一本书,那么最前面的人跟坐在第2排的人说,第2排的人跟第3排的人说,当命令传递到最后一排时,最后一排 ...

  6. 【python基础】第19回 多层,有参装饰器 递归 二分法

    本章内容概要 1. 多层装饰器 2. 有参装饰器 3. 递归函数 4. 算法(二分法) 本章内容详解 1. 多层装饰器 1.1 什么是多层装饰器 多层装饰器是从下往上依次执行,需要注意的是,被装饰的函 ...

  7. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法

    一.匿名函数 匿名函数的结构:变量   =  lamda  参数: 返回值 a  =  lamda  x : x*x       # x为参数,   : 后边的为函数体 print(a(x)) def ...

  8. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

  9. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

随机推荐

  1. 转://如何增加linux根目录的磁盘空间(基于LVM)?

    问题引出: 在测试过程中替换so文件,报磁盘空间不足的错误. ▲问题分析: 由于当时系统部署架构的考虑,把软件和数据库部署在了同一台机器上,并且给了30G的磁盘空间.系统上占用磁盘空间的有2部分,一是 ...

  2. spring mybatis整合

    mybatis和spring整合的配置方法有很多,核心都是一个矛盾:如何让spring管理mybatis为mapper生成的代理对象. 1.配置数据源 单独使用mybatis的时候数据源是在mybat ...

  3. 第9章 Java中的线程池 第10章 Exector框架

    与新建线程池相比线程池的优点 线程池的分类 ThreadPoolExector参数.执行过程.存储方式 阻塞队列 拒绝策略 10.1 Exector框架简介 10.1.1 Executor框架的两级调 ...

  4. Python框架学习之Flask中的数据库操作

    数据库操作在web开发中扮演着一个很重要的角色,网站中很多重要的信息都需要保存到数据库中.如用户名.密码等等其他信息.Django框架是一个基于MVT思想的框架,也就是说他本身就已经封装了Model类 ...

  5. linux命令之df

    功能:查看文件系统的磁盘空间使用情况 常用选项: -a 包含虚拟文件系统 -h 可易读单位显示 -i 显示 inode 信息而非块使用量 -k 1K 块的数量 -t 只显示指定文件系统为指定类型的信息 ...

  6. mybatis错误之org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    玩了MyBatis差不多有两年了,中间也玩过MyBatis-Plus,这个MyBatis-Plus其实与MyBatis的区别并不大.今天写博客业务代码的时候,犯一个初学者犯过的错误. 错误信息如下:o ...

  7. Pyhton2.x 和Python3.x

    一. 异常处理和pint区别 try: ...except Exception,e: # 2.x,3.x 需要把逗号(,)变为as. print e.message # 2.x,3.需要吧print内 ...

  8. 狄利克雷卷积&莫比乌斯反演总结

    狄利克雷卷积&莫比乌斯反演总结 Prepare 1.\([P]\)表示当\(P\)为真时\([P]\)为\(1\),否则为\(0\). 2.\(a|b\)指\(b\)被\(a\)整除. 3.一 ...

  9. 大数据不就是写SQL吗?

    应届生小祖参加了个需求分析会回来后跟我说被产品怼了一句: "不就是写SQL吗,要那么久吗" 我去,欺负我小弟,这我肯定不能忍呀,于是我写了一篇文章发在了公司的wiki 贴出来给大家 ...

  10. ORM 多表操作查询及增删改查

    ------------------------------------------只有对前途乐观的人,才能不怕黑暗,才能有力量去创造光明.乐观不是目的,而是人生旅途中的一种态度. 多表操作 创建模型 ...