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)-递归函数及练习题的更多相关文章

  1. Python初学者第二十二天 函数进阶(1)

    22day 1.函数命名空间: 2.函数作用域的查找顺序:LEGB locals->enclosing function ->globals ->_builtins_ a.local ...

  2. Python初学者第二十一天 函数(4)-内置函数

    21day 内置函数: 1.abs()绝对值函数 2.dict()创建一个字典 3.help()获取帮助信息 4.min()从一个列表中取出最小的数 5.max()从一个列表中取出最大值 6.bool ...

  3. Python初学者第十八天 函数(2)

    18day 函数 1.函数的返回值:return a.函数外的代码想要获取函数的返回结果时,即可使用return语句 b.函数中如遇到return后,会停止执行,并返回结果.所以若函数未使用retur ...

  4. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

  5. python全栈开发之匿名函数和递归函数

    python 匿名函数和递归函数 python全栈开发,匿名函数,递归函数 匿名函数 lambda函数也叫匿名函数,即函数没有具体的名称.是为了解决一些功能很简单需求而设计的一句话函数.如下: #这段 ...

  6. Python初学者第十九天 函数(3)

    19day 函数 1.作用域 Python中,一个函数就是一个作用域.所有的局部变量都是放在当前的作用域里面 代码定义完成后,作用域已经生成,作用域链向上查找 2.匿名函数 当需要暂时性的用到一个函数 ...

  7. python函数基础:嵌套函数、作用域、匿名函数、高阶函数、递归函数

    嵌套函数: 1. 函数内部可以再定义函数 2. 函数只有被调用之后才会执行 看如下代码: age = 18 def func1(): age = 22 print(age) def func2(): ...

  8. python之内置函数,匿名函数,递归函数

    一. 内置函函数 什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就 ...

  9. Python入门-匿名函数,递归函数,主函数

    1.三目运算符 对简单的条件语句,可以用三元运算简写.三元运算只能写在一行代码里面 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 "值1&quo ...

随机推荐

  1. 17.Generator函数的异步应用

    异步编程对 JavaScript 语言太重要.Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可. 1.传统方法 ES6 诞生以前,异步编程的方法,大概有下面 ...

  2. WPF 自定义ScrollViwer

    ScrollViewer自定义样式 ScrollViewer在各种列表.集合控件中广泛使用的基础组建,先看看效果图: 如上图,ScrollViewer简单来说分两部分,一个横向的滚动条,一个垂直滚动条 ...

  3. 穆里尼奥:曼联没有在今夏尝试过签下C罗

    在曼联结束的本个夏季首场友谊赛中,球队5-2战胜了洛杉矶银河,在赛后穆里尼奥出席了赛后的新闻发布会,并且回答了记者的提问.其中他表示曼联在今年夏季从来没有尝试回签C罗,因为这是“不可能完成的任务”. ...

  4. Linux环境进程间通信(二): 信号--转载

    http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html http://www.ibm.com/developerworks ...

  5. AutoResetEvent和ManualResetEvent理解

    AutoResetEvent和ManualResetEvent用于多线程之间代码执行顺序的控制,它们继承自WaitHandle,API相同,但在使用中还是有区别的. 每次使用时虽然理解了,但由于没有去 ...

  6. java 基础 --- servlet

    问题 : servlet 这个类是有什么作用 概述 servlet 是个接口,这个接口的作用是规范了接收请求的处理类.而最终的实现交给了 servlet 容器去实现. servlet 接口 接口方法如 ...

  7. 如何让code变得更易读

    从开始编码到现在,从没有意识去如何去写出更加规范,更加易读的代码,只是按照需求将某一功能进行实现.下面是最近在网上搜索查看的一些通用的知识点,做一记录. 单一抽象层次 单一抽象层次是指一个函数或者方法 ...

  8. Docker学习之基本概念

    Docker学习之基本概念 作为一个后端noder,不了解docker有点说不过去,这节开始,学习一些docker层面的东西. 什么是docker Docker最初是dotCloud公司创始人Solo ...

  9. Layui 好用的弹出框

    layui的下载地址: http://www.layui.com/ 需要引用layui里面的css跟js layui自带jquery var $ = layui.$ 一个直接弹出另一个窗体的弹出框 w ...

  10. ASP.NET页面支持的指令

    页面的处理指令 页面指令的处理用于配置执行该页面的运行时环境.在ASP.NET中,指令可以位于页面的任何位置,但良好且常见的习惯是将其置于文件的开始部分.除此,页面指令的名称是不区分大小写的,且指令的 ...