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. 关于全志A20的Ubuntu12.04 64位系统下环境配置及编译过程笔记【转】

    本文转载自:https://blog.csdn.net/buqingbuyuan/article/details/43370199 在安装Ubuntu系统之后,安装编译所需的GCC等工具,一般选用GC ...

  2. 华丽的使用sublime写lua~ sublime lua相关必装插件推荐~~

    缘起 lua脚本语言虽好,代码写得飞快,可是写错了调试起来却很困难,lua使用者经常容易犯得一个错误是--写错变量名了,if end 嵌套太多没匹配~,多打了一个逗号, --假设定义了一个变量 loc ...

  3. camera corder profile

    /system/etc/ 其中的qulity high 必须与 最大的支持的分辨率相同. 不然cts 不过. 这里的配置必须在报告给app的数据匹配.

  4. MongoDB快速入门(十三)- 聚合count、distinct和group

    1. count:     --在空集合中,count返回的数量为0.     > db.test.count()    0    --测试插入一个文档后count的返回值.    > d ...

  5. 微信小程序选择器

  6. ZC_RemoteThread

    1.Z_WinMain.cpp #include <windows.h> #include "resource.h" #include "Z_RemoteFu ...

  7. 学习mybatis时出现了java.io.IOException: Could not find resource EmployeeMapper.xml

    使用mybatis时出现了Could not find resource EmployeeMapper.xml和Could not find resource mybatis-config.xml两种 ...

  8. javascrip函数简单介绍

    JavaScript 函数定义JavaScript 使用关键字 function 定义函数.函数可以通过声明定义,也可以是一个表达式.函数声明在之前的教程中,你已经了解了函数声明的语法 :functi ...

  9. 复制文件夹的方法 .net

    void CopyDirectory(string SourcePath,string DestinationPath) { //创建所有目录 foreach(string dirPath inDir ...

  10. C语言小知识点汇集

    1. 三元表达式“?:”冒号两边的两个操作数类型必须一致. 2. 枚举变量的sizeof值同int型一样为4. 3. 为了消除不必要的计算 &&两侧的表达式,当左侧即第1个表达式不成立 ...