Python学习日记(十三) 递归函数和二分查找算法
什么是递归函数?
简单来说就是在一个函数中重复的调用自己本身的函数
递归函数在调用的时候会不断的开内存的空间直到程序结束或递归到一个次数时会报错
计算可递归次数:
i = 0
def func():
global i
print('i = {}'.format(i))
i += 1
return func()
func() #.....i = 994 i = 995 RecursionError: maximum recursion depth exceeded while calling a Python object
在这里我们修改我们可递归的次数:
import sys
sys.setrecursionlimit(1000000)
i = 0
def func():
global i
print('i = {}'.format(i))
i += 1
return func()
func() #...i = 3924 i = 3925
如果还想递归更多的次数,就必须要提升计算机的性能了
递归函数的优点就是能让一个问题变得简单,但缺点就是太占用内存,因此递归函数不适合解决需要大规模递归运算的问题
二分查找算法:
这个被查询的列表必须是一个有序的列表
def find(l,aim,start = 0,end = None):
end = len(l) if end is None else end
mid_index = (end-start)//2 + start
if start <= end:
if l[mid_index] < aim:
return find(l,aim,start=mid_index+1,end=end)
elif l[mid_index] > aim:
return find(l,aim,start=start,end=mid_index-1)
else:
return mid_index
else:
return '找不到这个元素!'
print(find([5,6,8,9,10,17,18,19,20],8)) #
Python学习日记(十三) 递归函数和二分查找算法的更多相关文章
- python函数(4):递归函数及二分查找算法
人理解循环,神理解递归! 一.递归的定义 def story(): s = """ 从前有个山,山里有座庙,庙里老和尚讲故事, 讲的什么呢? ""& ...
- Python递归函数和二分查找算法
递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属 ...
- Python递归函数,二分查找算法
目录 一.初始递归 二.递归示例讲解 二分查找算法 一.初始递归 递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但 ...
- 用Python实现的二分查找算法(基于递归函数)
一.递归的定义 1.什么是递归:在一个函数里在调用这个函数本身 2.最大递归层数做了一个限制:997,但是也可以自己限制 1 def foo(): 2 print(n) 3 n+=1 4 foo(n) ...
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...
- Python——递归、二分查找算法
递归函数 1. 递归 (1)什么是递归:在函数中调用自身函数(2)最大递归深度:默认997/998——是Python从内存角度出发做的限制 n = 0 def story(): global n n+ ...
- python实现二分查找算法
二分查找算法也成为折半算法,对数搜索算法,一会中在有序数组中查找特定一个元素的搜索算法.搜索过程是从数组中间元素开始的 如果中间元素正好是要查找的元素,则搜索过程结束:如果查找的数大于中间数,则在数组 ...
- python学习日记(初识递归与算法)
递归函数 定义 递归的定义——在一个函数里再调用这个函数本身 递归的最大深度——997,即栈溢出. 使用递归函数需要注意防止栈溢出.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进 ...
- Python学习日记 --day2
Python学习日记 --day2 1.格式化输出:% s d (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...
随机推荐
- Mxnet:以全连接层为例子自定义新的操作(层)
https://blog.csdn.net/a350203223/article/details/77449630 在使用深度学习平台时,光会使用其中已定义好的操作有时候是满足不了实际使用的,一般需要 ...
- SQL Server导入Excel文件报错
目录 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 原因 解决方法 该值违反了该列的完整性约束 空行 没有设置为允许为NULL 我以前也导入过数据,也没报错,今天再次导入数据的时候,发现了两 ...
- Jenkins - 以Docker方式安装启动Jenkins
1 - 官网信息 操作步骤:https://jenkins.io/zh/doc/book/installing/#docker Docker映像地址:https://hub.docker.com/r/ ...
- sshpass命令使用
1.直接远程连接某主机 sshpass -p {密码} ssh {用户名}@{主机IP} 2.远程连接指定ssh的端口 sshpass -p {密码} ssh -p ${端口} {用户名}@{主机IP ...
- 【神经网络与深度学习】Win10+VS2015 caffe环境搭建(极其详细)
caffe是好用,可是配置其环境实在是太痛苦了,依赖的库很多不说,在VS上编译还各种报错,你能想象那种被一百多个红色提示所笼罩的恐惧. 且网上很多教程是VS2013环境下编译的,问人很多也说让我把1 ...
- mysql创建用户并授权Repl_slave_priv和Repl_client_priv
CREATE USER 'test'@'localhost' IDENTIFIED BY 'test'; FLUSH PRIVILEGES; GRANT REPLICATION CLIENT ON * ...
- python sys模块(12)
在python sys模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数!关于sys模块在官网也有详细的介绍:python sys模块官方介绍. 一.sys模块简介 sys.arg ...
- markdown ——flow流程图
一个纯文本的语法怎么画图? 将流程图代码包含在```folw和`````之间即可 例子 st=>start: Start op=>operation: Your Operation sub ...
- mybatisGenerator
mybatisGenerator,可以自定义生成的xml,dao接口文件名称,可以自动在生成的实体类上添加数据库字段的注释 项目结构: 在generatorConfig.xml配置好数据库和对应的表, ...
- 【转帖】MIPS构架之:我和龙芯有个约会
MIPS构架之:我和龙芯有个约会 https://www.eefocus.com/mcu-dsp/364490 <处理器史话>之十二 2016-06-24 12:21 作者:付丽华预计 1 ...