Python——递归、二分查找算法
递归函数
1. 递归
(1)什么是递归:在函数中调用自身函数
(2)最大递归深度:默认997/998——是Python从内存角度出发做的限制
n = 0
def story():
global n
n+= 1
print(n)
story() #997/998
story()
(3)修改最大深度:最好不要改——递归次数太多,则不适合用递归解决问题
import sys
sys.setrecursionlimit(2000) #1997/1998
2. 递归的优点
会让代码变简单
3. 递归的缺点
占用内存
4. 能看懂递归
# 算年龄 def age(n):
if n == 4:
return 40
elif n>0 and n<4:
return age(n+1) + 2 print(age(1)) # 学着看递归
'''
def age(1): #46
if 1 == 4:
return 40
elif 1>0 and 1<4:
return age(2) + 2 #44+2 = 46 def age(2): #44
if 2 == 4:
return 40
elif 2>0 and 2<4:
return age(3) + 2 #42+2 = 44 def age(3): #42
if 3 == 4:
return 40
elif 3>0 and 3<4:
return age(4) + 2 #40+2 = 42 def age(4): #40
if 4 == 4:
return 40
elif 4>0 and 4<4:
return age(4+1) + 2
'''
5. 应用场景
6. 初识递归
7. 算法——二分查找算法(必须有序排列)
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,82,83,88]
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:
l[mid_index + 1:]
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
# print('找到了', mid_index, aim)
else:
return '找不到这个值啊'
ret1 = find(l,67)
ret2 = find(l,64) print(ret1) #找到了 18
print(ret2) #找不到这个值啊
8. 三级菜单——递归实现
Python——递归、二分查找算法的更多相关文章
- Python递归函数,二分查找算法
目录 一.初始递归 二.递归示例讲解 二分查找算法 一.初始递归 递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但 ...
- python实现二分查找算法
二分查找算法也成为折半算法,对数搜索算法,一会中在有序数组中查找特定一个元素的搜索算法.搜索过程是从数组中间元素开始的 如果中间元素正好是要查找的元素,则搜索过程结束:如果查找的数大于中间数,则在数组 ...
- Python递归 — — 二分查找、斐波那契数列、三级菜单
一.二分查找 二分查找也称之为折半查找,二分查找要求线性表(存储结构)必须采用顺序存储结构,而且表中元素顺序排列. 二分查找: 1.首先,将表中间位置的元素与被查找元素比较,如果两者相等,查找结束,否 ...
- 【Python】二分查找算法
二分查找:在一段数字内,找到中间值,判断要找的值和中间值大小的比较.如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找.如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找.直到找到我们 ...
- python函数(4):递归函数及二分查找算法
人理解循环,神理解递归! 一.递归的定义 def story(): s = """ 从前有个山,山里有座庙,庙里老和尚讲故事, 讲的什么呢? ""& ...
- 二分查找算法(Python版)
[本文出自天外归云的博客园] 记性不好(@.@),所以平时根本用不到的东西就算学过如果让我去想也会需要很多时间(*.*)! 二分查找算法 在一个有序数组中查找元素最快的算法,也就是折半查找法,先找一个 ...
- Python递归函数和二分查找算法
递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属 ...
- Python学习日记(十三) 递归函数和二分查找算法
什么是递归函数? 简单来说就是在一个函数中重复的调用自己本身的函数 递归函数在调用的时候会不断的开内存的空间直到程序结束或递归到一个次数时会报错 计算可递归次数: i = 0 def func(): ...
- 用Python实现的二分查找算法(基于递归函数)
一.递归的定义 1.什么是递归:在一个函数里在调用这个函数本身 2.最大递归层数做了一个限制:997,但是也可以自己限制 1 def foo(): 2 print(n) 3 n+=1 4 foo(n) ...
随机推荐
- $digest already in progress 解决办法
Solution In short, instead of doing this: ... your controller code... $http.get('some/url', function ...
- Oracle 11g 在audit_file_dest目录下产生大量的aud文件
一.adump目录数据暴增现象 发现某台数据库服务器的根目录的使用率在暴涨,发现Oracle数据库的adump目录,每秒生成一个dump文件.数据库并未开通审计外部记录.为什么adump目录会生成那么 ...
- Triangles 正多边形分割锐角三角形
题目描述 已知一个圆的圆周被N个点分成了N段等长圆弧,求任意取三个点,组成锐角三角形的个数. 输入 多组数据,每组数据一个N(N <= 1000000) 输出 对于每组数据,输出不同锐角三角形的 ...
- 一個不錯的免費流程圖制作軟件 Download link
The process flow software you saw yesterday which is a free software, but you need to register. Down ...
- 统一异常处理@RestContrllerAdvice,@ExceptionHandler(转载)
思想很重要 统一异常处理实现方式:使用注解@RestContrllerAdvice,@ExceptionHandler 先想明白一个问题:定义统一异常处理类之后,是不是在Contrller中就不用捕获 ...
- IOS控件大全及控件大小
一 视图UIView和UIWindow iphone视图的规则是:一个窗口,多个视图.UIWindow相当于电视机,UIViews相当于演员. 1.显示数据的视图 下面几个类可在屏幕上显示信息: UI ...
- 3.1 shell简介、变量、运算符
小知识: ipcs可以查看系统中创建的ipc进程间通信资源,例如信号量.共享内存等.示例如下: 什么是shell? shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程 ...
- ubuntu16.04-caffe安装过程详解-草稿
前言 目前主要模块都是基于深度学习展开的,虽然知道一些深度学习的基础知识,只是皮毛,还没有使用深度学习框架练手甚至深入,故开始着手深度学习的实操和深入学习. 操作步骤 参考 1.Ubuntu16.04 ...
- DS18B20配置
复位脉冲: 先拉低至少480us,以产生复位脉冲,接着释放4.7k电阻为高,延时15~60us, 进入接收. void DS18B20_Rst(void) { DS18B20_IO_OUT(); // ...
- 有向图与无向图的合并操作区别D(递归与并查集)
有向图的合并,典型问题:通知小弟(信息只能单向传播)https://www.nowcoder.com/acm/contest/76/E 无向图的合并,典型问题:修道路问题 由于无向图只要二者有联系即可 ...