1.初始递归

  递归属于函数中的一种特殊函数,功能迅速并且干净利落,在函数中递归的基本就是在函数中调用自己本身

def func():
print(111)
func()
func()#将会无限循环‘111’并且在第998次的时候停止,python内部的保护机制。

 2.递归中的保护机制

  由于递归是调用自身那么将会面对一个严重的问题,那就是会不断的调用自己,并且不断创建一个新的空间,占用大量内存,由此python给予递归一个保护内存的方法,就是使得递归调取自身998次后就会出现报错并且会很快停止。

def func(n):
n += 1
print(n)
func(n)
func(0)
#结果:
995
996
997
998Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled2/day15/地柜.py", line 46, in <module>
func(0)#将会无限循环‘111’并且在第998次的时候停止,python内部的保护机制。
File "C:/Users/Administrator/PycharmProjects/untitled2/day15/地柜.py", line 45, in func

  但是有一个有趣的模块能够修改递归中的最大上限,sys.setrecursionlimit() ,sys模块中的setrecursionlimit()指令,能够将递归中的保护机制最大上限改变。

import sys
sys.setrecursionlimit(10000)
def func(n):
n += 1
print(n)
func(n)
func(0) 结果:
3804
3805
3806
3807 windows系统大都是在3800左右,而ios和linux一般都在20000左右,由此看出电脑的基本性能,有兴趣的可以试试

 3.二分法用递归

在字典的查询中二分法使用的最频繁,

li = [1,2,3,4,5,6,7,8,9,10]
def two_search(li,aim)
# li = [1,2]
def two_search(li, aim, start=0, end=None):
end = len(li)-1 if end == None else end
mid_index = (end - start) // 2 + start # 3
if start <= end:
if li[mid_index] < aim:
return two_search(li,aim,start=mid_index+1,end=end)
elif li[mid_index] > aim:
return two_search(li,aim,start=0,end=mid_index-1) #([2,3,5],3)
elif li[mid_index] == aim:
return mid_index
else:
return '没有此值'
else:
return '没有此值'
print(two_search(li,3))#暂时不理解!!!!

  

python 递归函数和二分查找的更多相关文章

  1. Python递归函数和二分查找算法

    递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属 ...

  2. python函数(4):递归函数及二分查找算法

    人理解循环,神理解递归!  一.递归的定义 def story(): s = """ 从前有个山,山里有座庙,庙里老和尚讲故事, 讲的什么呢? ""& ...

  3. Python学习日记(十三) 递归函数和二分查找算法

    什么是递归函数? 简单来说就是在一个函数中重复的调用自己本身的函数 递归函数在调用的时候会不断的开内存的空间直到程序结束或递归到一个次数时会报错 计算可递归次数: i = 0 def func(): ...

  4. python之装饰器补充与递归函数与二分查找

    目录 多层装饰器 有参装饰器 递归函数 基本演示 斐波那契数列 总结 小拓展 算法之二分法 简介 举例 总结 多层装饰器 我们已经知道了语法糖的作用是将装饰对象自动装饰到装饰器中,一个语法糖的应用我们 ...

  5. 用Python实现的二分查找算法(基于递归函数)

    一.递归的定义 1.什么是递归:在一个函数里在调用这个函数本身 2.最大递归层数做了一个限制:997,但是也可以自己限制 1 def foo(): 2 print(n) 3 n+=1 4 foo(n) ...

  6. Python——递归、二分查找算法

    递归函数 1. 递归 (1)什么是递归:在函数中调用自身函数(2)最大递归深度:默认997/998——是Python从内存角度出发做的限制 n = 0 def story(): global n n+ ...

  7. python算法之二分查找

    说明:大部分代码是在网上找到的,好几个代码思路总结出来的 通常写算法,习惯用C语言写,显得思路清晰.可是假设一旦把思路确定下来,并且又不想打草稿.想高速写下来看看效果,还是python写的比較快.也看 ...

  8. day17 python递归案例(二分查找,三级菜单)

    递归函数与三级菜单 menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {} ...

  9. Python 算法之二分查找

    二分查找 二分查找又称折半查找 优点是比较次数少,查找速度快,平均性能好 缺点是要求待查表为有序表,且插入删除困难 折半查找方法适用于不经常变动而查找频繁的有序列表. 猜数字游戏 1.生成一个有序列表 ...

随机推荐

  1. 一个Elasticsearch嵌套nested查询的实例

    创建索引和数据准备 PUT course PUT course/_mapping/course { "properties": { "course":{ &qu ...

  2. java8 函数接口 Predicate例子

    import java.util.HashSet; import java.util.Collection; import java.util.function.Predicate; public c ...

  3. jmeter-Foreach控制器与正则表达式

    使用正则表达式提取器匹配的id值有17个(参考上一篇) 如果我想对每个id值进行请求,这个时候就可以用到foreach控制器 添加 由于我正则表达式取值命名为orderid,这里就将orderid设置 ...

  4. MSSQL复制表操作

    1:复制表结构及数据到新表 select * into 目的数据库名.dbo.目的表名 from 原表名 select * into my0735home.dbo.infoMianTest from ...

  5. RxJava+RxAndroid+MVP入坑实践(基础篇)

    转载请注明出处:http://www.blog.csdn.net/zhyxuexijava/article/details/51597230.com 前段时间看了MVP架构和RxJava,最近也在重构 ...

  6. python 图像库PIL详解

    PIL详细文档 The most important class in the Python Imaging Library is the Image class, defined in the mo ...

  7. opencv:图像模糊处理

    接口: blur(sourceImage,dstImage,Size(,)); // 图像模糊处理 示例代码: #include <opencv.hpp> #include <img ...

  8. 3个IO口8个按键

  9. Activity的基本概念与Activity的生命周期

    一.Activity的基本概念 Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互,比如打电话,照相,发送邮件,或者显示一个地图!Activity用 ...

  10. ./startup.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录 解决办法

    这是因为Linux上 的catalina.sh文件格式给修改了,看不出来,这样就必须通过vim编辑下,变为正常的格式,在catalina.sh的命令模式下输入  ( :set ff=unix ),接着 ...