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) ...
随机推荐
- JavaScript学习总结(三)——逻辑And运算符详解
在JavaScript中,逻辑 AND 运算符用双和号(&&)表示 1 var bTrue = true; 2 var bFalse = false; 3 var bResult = ...
- (zz)设置单元格的宽度和高度
(zz)设置单元格的宽度和高度 博客分类: POI生成Excel 在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致.所以要设置单元格的宽度,我们就得从列 ...
- grafana+influxdb安装
登录http://192.168.1.114:3000/login 2.修改完密码之后,进入主界面
- 1.学习dubbo
1.安装虚拟机 http://www.cnblogs.com/yun965861480/p/6246396.html 2.配置网络 http://www.cnblogs.com/yun96586148 ...
- php include,require 主要是向网页中引入文件
- CentOS 6.5使用yum快速搭建LAMP环境
由于这里采用yum方式安装,前提是我们必须配置好yum源.为了加快下载速度,建议使用网易的yum源. 这种方式对于初学者来说,非常方便,但是可定制性不强,而且软件版本较低.一般用于实验和学习环境. 1 ...
- C# zedgraph利用另一窗口取得的串口数据绘图
C# zedgraph利用另一窗口获得的串口数据绘图第一次用zedgraph,非常不熟悉,网上很多内容看的云里雾里... 这个程序主界面接收串口数据,而另外一个窗口进行实时曲线绘图,要怎么样实现for ...
- linux C/C++服务器后台开发面试题总结
一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别? 主要浅谈下C/C++和PHP语言的区别: 1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网 ...
- 如何学php少走弯路
我是自学php,而且是非计算机专业,算半路出家的.(工作了一段时间又自学编程) 1.一本好书至关重要.如果这本书的知识非常深入,那么还是不要看了.对初学者来说只能是打击.因为很多东西都看不懂.一本知识 ...
- I.MX6 Android Linux UART send receive with multi-thread and multi-mode demo
/******************************************************************************************* * I.MX6 ...