【python之路23】递归
1、递归的基础
举例说明:老师要班里坐在最后的一排学生要一本书,老师对前面的人说你向最后一排的同学要一本书,那么最前面的人跟坐在第2排的人说,第2排的人跟第3排的人说,当命令传递到最后一排时,最后一排的同学给倒数第2排的人,倒数第2排的人,给倒数第3排的人,直到传递给第1排,第1排的同学把书给老师。
2、递归斐波那契数列
- #!usr/bin/env python
- # -*- coding:utf-8 -*-
- #递归 斐波那契数列
- def fab(n1,n2):
- if n1 > 10000:
- return
- print(n1)
- temp = n1 + n2
- fab(n2,temp)
- fab(0,1)
3、递归过程返回值分析
- #!usr/bin/env python
- # -*- coding:utf-8 -*-
- def f4(n):
- if n == 5:
- return 200
- r = f4(n+1)
- return r
- print(f4(1))
执行过程如下图:
4、递归求斐波那契数列的第10个值
- #!usr/bin/env python
- # -*- coding:utf-8 -*-
- def fab(n,a1,a2):
- if n == 10:
- return a1
- a3 = a1 + a2
- r = fab(n+1,a2,a3)
- return r
- re = fab(1,0,1)
- print(re)
5、利用递归读取目录下的所有文件夹和文件
- #通过递归将目录下所有的文件及文件夹进行打印
- import os
- mypath = 'D:\\project\\untitled1'
- def func(my_path,n):
- dirlist = os.listdir(my_path) #读取目录列表
- for el in dirlist:
- el_path = os.path.join(my_path,el) #连接目录和文件
- if os.path.isdir(el_path): #判断是否为目录
- print('\t' * n, el)
- func(el_path,n+1)
- else:
- print('\t'*n,el)
- func(mypath,0)
6、二分法查找
1)二分法查找的条件是:序列有序排序
- li = list(range(10000000))
- print("开始查找.........")
- num = 50000
- left = 0
- right = len(li)-1
- count = 0 #记录找了多少次
- while left <= right:
- count = count + 1
- middle = (left + right) // 2
- if num > li[middle]:
- left = middle + 1
- elif num < li[middle]:
- right = middle - 1
- else:
- print(middle)
- break
- else:
- print("没有找到这个数")
- print('一共找了%s次' % count)
2)递归的方式实现二分查找
- lis = [11, 22, 33, 44, 55, 66, 77, 88, 99]
- def func(left, right, num, li):
- middle = (left + right) // 2
- if num > li[middle]:
- left = middle + 1
- elif num < li[middle]:
- right = middle - 1
- else:
- return middle
- re = func(left, right, num, li)
- return re
- result = func(0, len(lis) - 1, 88, lis)
- print(result)
【python之路23】递归的更多相关文章
- python之路——23
复习 1.类定义 函数--方法--动态属性 必须传self 变量--类属性--静态属性 __init__方法--初始化方法2.实例化 1.使用:对象 = 类() 2.实例和对象没有区别 3.对象调用方 ...
- Python之路Python全局变量与局部变量、函数多层嵌套、函数递归
Python之路Python全局变量与局部变量.函数多层嵌套.函数递归 一.局部变量与全局变量 1.在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量.全局变量作用域是整个程序,局 ...
- Python之路【第十九篇】:爬虫
Python之路[第十九篇]:爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之路【第十七篇】:Django之【进阶篇】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十七篇】:Django【进阶篇】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路,Day21 - 常用算法学习
Python之路,Day21 - 常用算法学习 本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的 ...
- Python之路,Day17 - 分分钟做个BBS论坛
Python之路,Day17 - 分分钟做个BBS论坛 本节内容: 项目:开发一个简单的BBS论坛 需求: 整体参考"抽屉新热榜" + "虎嗅网" 实现不同 ...
- Python之路,Day8 - Socket编程进阶
Python之路,Day8 - Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...
随机推荐
- 【案例】鼠标按下,DIV跟随移动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- wordpress jwt-auth 多语言 jwt_auth_bad_iss的解决方法
因为目前处理的 wordpress 网站使用了,使用 qtranslate-x 多语言插件 JWT Authentication for WP REST API 插件 rest api 登录 调用wp ...
- [转]C# 之泛型详解
什么是泛型 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为 ...
- springboot启动过程
使用了很长时间的springboot了,一直都知道它简单易用,简化了框架的搭建过程,但是还是不知道它是如何启动的,今天就跟着springboot的源码,去探探这其中的奥妙 以下是spring应用的启动 ...
- 三. var let const的理解 以及 立即执行函数中的使用 以及 for循环中的例子
一. 立即执行函数 windows中有个name属性,name='' '' var 如果我们用var name 去声明,那就会改变windows中name的值(因为我们不是在函数作用域中声明的,所以会 ...
- django-rest-framework-jwt的使用
一简介 JWT 是一个开放标准(RFC 7519),它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法.该信息可以被验证和信任,因为它是数字签名的.JWTS可以使 ...
- Linux查看温度
step 1: centos $ sudo yum install lm_sensors ubuntu $ sudo apt-get install lm_sensors step2$ sudo se ...
- [原创]关于时间格式的坑(kk:mm:ss、HH:mm:ss与hh:mm:ss)
笔者在项目中使用 kk:mm:ss表示24小时制,却发现与所想的不同,特记此坑,提醒众人: kk:mm:ss 24小时制,时间为1:00:00-24:59:59 HH:mm:ss 24小时制,时间 ...
- Struts2OGNL
OGNL: 什么是OGNL Object Graph Navigation Language 开源项目,取代页面中Java脚本,简化数据访问 和EL同属于表达式语言,但功能更为强大 OGNL在St ...
- 编写函数处理user_list,新方法
写函数,完成以下功能: # 例如有: user_list=[ {"name": "alex","hobby":"抽烟"} ...