Python初学者第二十天 函数(3)-递归函数及练习题
20day
1、递归的返回值:
递归返回值

2、递归的特性:
a、必须有一个明确的结束条件
b、每次进入更深一层递归时,问题规模相比上次递归都应有所减少
c、递归效率不高,递归层次过多会导致栈溢出
3、递归练习题:
3.1 如何从一个有序列表的1000个元素里面找到674这个元素的索引
data = [1,3,5,9,10,25,27,39.........674,698................]
分析:
1、将列表从中间的位置分为2个部分;
2、找到列表的中间位置的值,若此值小于674,说明674在后面的那一部分。若大于674,说明在前面那一部分;
3、递归列表,重复将列表从中间位置分为2个部分,直到中间位置的值等于674,返回它的索引;

#列表中找到其中一个值,并返回其索引
seq = [1,2,4,5,9,8,10,24,27] seq.sort() #先将列表重新排序,得到一个有序的列表
def search(seq,n,lower,upper): #seq列表,n要找的数据,lower列表的索引下限,upper索引上限
middle = (lower + upper)//2 #找到列表的中间位置
if n > seq[middle]: #找到列表的中间位置的值,对比n,若比n小。则在中间位置后面找,如n为60,中间为50,则在50+后面找
return search(seq,n,middle+1,upper) #递归search,将结果返回再找一次
elif n < seq[middle]: #找到列表的中间位置的值,对比n,若比n大。则在中间位置前面找,如n为20,中间为50,则在50前面找
return search(seq,n,lower,middle)
else: #当n等于中间值的时候,即已找到该元素,返回其索引值即可
return middle
print(search(seq,5,0,8)
Python初学者第二十天 函数(3)-递归函数及练习题的更多相关文章
- Python初学者第二十二天 函数进阶(1)
22day 1.函数命名空间: 2.函数作用域的查找顺序:LEGB locals->enclosing function ->globals ->_builtins_ a.local ...
- Python初学者第二十一天 函数(4)-内置函数
21day 内置函数: 1.abs()绝对值函数 2.dict()创建一个字典 3.help()获取帮助信息 4.min()从一个列表中取出最小的数 5.max()从一个列表中取出最大值 6.bool ...
- Python初学者第十八天 函数(2)
18day 函数 1.函数的返回值:return a.函数外的代码想要获取函数的返回结果时,即可使用return语句 b.函数中如遇到return后,会停止执行,并返回结果.所以若函数未使用retur ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- python全栈开发之匿名函数和递归函数
python 匿名函数和递归函数 python全栈开发,匿名函数,递归函数 匿名函数 lambda函数也叫匿名函数,即函数没有具体的名称.是为了解决一些功能很简单需求而设计的一句话函数.如下: #这段 ...
- Python初学者第十九天 函数(3)
19day 函数 1.作用域 Python中,一个函数就是一个作用域.所有的局部变量都是放在当前的作用域里面 代码定义完成后,作用域已经生成,作用域链向上查找 2.匿名函数 当需要暂时性的用到一个函数 ...
- python函数基础:嵌套函数、作用域、匿名函数、高阶函数、递归函数
嵌套函数: 1. 函数内部可以再定义函数 2. 函数只有被调用之后才会执行 看如下代码: age = 18 def func1(): age = 22 print(age) def func2(): ...
- python之内置函数,匿名函数,递归函数
一. 内置函函数 什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就 ...
- Python入门-匿名函数,递归函数,主函数
1.三目运算符 对简单的条件语句,可以用三元运算简写.三元运算只能写在一行代码里面 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 "值1&quo ...
随机推荐
- 【es6】字符串扩展
8.模板字符串 模板字符串(template string)是增强版的字符串,用反引号(`)标识.它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量. ${}中可以放 1. ...
- [问题解决]Android7.0上PopupWindow的showAsDropDown位置问题
[问题解决]Android7.0上PopupWindow的showAsDropDown位置问题 /** * Created by diql on 2017/02/16. */ 问题说明 我的popup ...
- 对于maven创建spark项目的pom.xml配置文件(图文详解)
不多说,直接上干货! http://mvnrepository.com/ 这里,怎么创建,见 Spark编程环境搭建(基于Intellij IDEA的Ultimate版本)(包含Java和Scala版 ...
- 解决Linux下pcieport 0000:00:1c.5问题导致的系统根目录/磁盘空间不足
最近刚换了笔记本,拿到本后在win10基础装上Ubuntu 16.04双系统,有个问题是每次关机都会报一堆pcie问题,并且经常没声音,声音问题通过上一篇文章暂时解决,然后就没在意了,可是几天后出现系 ...
- 剑指offer(31-35)编程题
整数中1出现的次数(从1到n整数中1出现的次数) 把数组排成最小的数 丑数 第一个只出现一次的字符位置 数组中的逆序 31.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数 ...
- Java GC 垃圾回收算法 内存分配
垃圾回收(Garbage Collection, GC)是Java不同于c与c++的重要特性之一. 他帮助Java自动清空堆中不再使用的对象. 由于不需要手动释放内存,程序员在编程中也可以减少犯错的机 ...
- R语言改变大小写 toupper()和 tolower()函数
这些函数改变字符串的字符的大小写. 语法 toupper()和 tolower()函数的基本语法为: toupper(x) tolower(x) 以下是所使用的参数的说明: x - 向量输入. 示例 ...
- Django 用模板来节省公共代码,
如果我们有一个后台网站,或者显示个人信息的网站 标题logo,边框等信息的代码都是固定的,只有部分区域是改变, 我们如果用Django来写html的话就会重复代码.这时候我们只要用模板的方 ...
- 一起来做Chrome Extension《搭个架子》
CEF - A simple Chrome Extension development falsework CEF是一个简单的Chrome Extension开发脚手架,它有如下功能: 模块化的结构, ...
- xml布局中include的使用
参考:http://blog.csdn.net/harvic880925/article/details/17263275 include_button1.xml <?xml version=& ...