Python9-递归函数-day17
# 计算方法:人脑复杂,计算机简单
#查找:找数据
#排序
#最短路径
#我们学习的算法都是过去时
#要了解基础的算法,才能创造出更好的算法
#不是所有的事情都能套用现成的方法解决的
# 有些时候会用到学过的算法只是来解决问题
#二分查找算法 必须处理有序的列表
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
# def find(l,aim):
# mid_index = len(l) // 2
# if l[mid_index] < aim:
# new_l = l[mid_index + 1:]
# find(new_l,aim)
#
# elif l[mid_index] > aim:
# new_l = l[:mid_index]
# find(new_l,aim)
# else:
# print('get it',mid_index,l[mid_index])
#
# find(l,66) l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
# def find(l,aim,start=0,end=None):
# end = len(l) if end is None else end #end len(1) 24
# mid_index = (end - start) // 2 + start #计算中间值 12 +0 =12
# if l[mid_index] < aim: #l[12] < 44 41 <44
# find(l,aim,start =mid_index + 1,end=end) #find(1,44,start=13,end=24)
# elif l[mid_index] > aim:
# find(l,aim,start =start + 1,end=mid_index-1)
# else:
# print('got it',mid_index,aim)
# #第二次
# def find(l,aim,start=0,end=None): #1,44,start=13,end=24
# end = len(l) if end is None else end #end=24
# mid_index = (end - start) // 2 + start #计算中间值 24-13 =11 /2 =5 +13=18
# if l[mid_index] < aim: #l[18] < 44 67 <44
# find(l,aim,start =mid_index + 1,end=end)
# elif l[mid_index] > aim: 67 >44
# find(l,aim,start =start + 1,end=mid_index-1)#find(1,44,start=13,end=17)
# else:
# print('got it',mid_index,aim)
# #第3次
# def find(l,aim,start=0,end=None): #1,44,start=13,end=17
# end = len(l) if end is None else end #end=17
# mid_index = (end - start) // 2 + start #计算中间值 17-13 =4 /2 =2 +13=15
# if l[mid_index] < aim: #l[15] < 44 55 <44
# find(l,aim,start =mid_index + 1,end=end)
# elif l[mid_index] > aim: 55 >44
# find(l,aim,start =start + 1,end=mid_index-1)#find(1,44,start=13,end=14)
# else:
# print('got it',mid_index,aim)
# #第4次
# def find(l,aim,start=0,end=None): #1,44,start=13,end=14
# end = len(l) if end is None else end #end=14
# mid_index = (end - start) // 2 + start #计算中间值 14-13 =1/2 =0 +13=13
# if l[mid_index] < aim: #l[13] < 44 42 <44
# find(l,aim,start =mid_index + 1,end=end)#find(1,44,start=14,end=14)
# elif l[mid_index] > aim: 55 >44
# find(l,aim,start =start + 1,end=mid_index-1)
# else:
# print('got it',mid_index,aim)
#第5次
def find(l,aim,start=0,end=None): #1,44,start=14,end=14
end = len(l) if end is None else end #end=14
if start <= end:
mid_index = (end - start) // 2 + start #计算中间值 14-14 =0/2 =0 +14=14
if l[mid_index] < aim: #l[14] < 44 43<44
return find(l,aim,start =mid_index + 1,end=end)#find(1,44,start=15,end=14)
elif l[mid_index] > aim:
return find(l,aim,start =start + 1,end=mid_index-1)
else:
return mid_index,aim
else:
return 'not get it'
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] ret = find(l,66)
print(ret)
Python9-递归函数-day17的更多相关文章
- 递归函数 day17
		一 递归函数 n = 1 金老板 38+2 =40n = 2 alex n+2= 金老板 36+2 = 38n = 3 wusir n+2 = alex wusir 36 def age(n): #n ... 
- day17递归函数(二分法查找)
		递归函数: 如果函数包含了对其自身的调用,该函数就是递归的: example 1:二分法查找的实现: def find_recursion(l,aim,start=0,end=None): #end不 ... 
- day17.初识递归函数
		在一个函数调用这个函数本身就是递归函数 递归函数默认深度最大997 n = 0 def func(): global n n += 1 print('hello,world') print(n) fu ... 
- day17:递归函数
		1,递归函数是一个函数体系,非常的难 2,练习题一 # 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao',' ... 
- javascript中的递归函数
		正常的递归函数如下: function factorial(num){ ){ ; }else{ ); } } 这个函数表面看起来还ok,但如果我们执行下面代码就会出错. var jenny = fac ... 
- JS函数相关及递归函数的使用
		JS函数相关及递归函数的使用 通用js程序: function 函数名(参数列表) { 函数体 } 可使用alert()输出,也可用return返回值. alert与return区别: functio ... 
- python3--函数(函数,全局变量和局部变量,递归函数)
		1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ... 
- Python之路 day3 递归函数
		#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 在函数内部,可以调用其他函数.如果一个函数在内 ... 
- Python3学习(二)-递归函数、高级特性、切片
		##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ... 
- 浅谈-js递归函数
		所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 下面我们就做一个10以内的阶乘试试看吧: [Ctrl+A 全选 ... 
随机推荐
- C# 获取当前ip
			1.获取局域网ip IPAddress ipAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];//获得当前IP地址 string ip=ipAd ... 
- Excel 通过pl/sql导入到数据库 文本导入器  odbc导入器
			Excel 通过pl/sql导入到数据库 第一种方法:文本导入器 1.准备Excel导入数据 jc.xls 2.把 jc.xls 文件 改为 jc.csv文件 3.在数据库里建一张jc表(FLH ... 
- jQuery addClass() 源码解读
			addClass: function( value ) { var classes, elem, cur, clazz, j, i = 0, len = this.length, proceed = ... 
- toLua学习
			toLua学习通用的过程//开始LuaState lua = new LuaState();lua.Start();--在这个位置插入lua的具体操作--//结束lua.CheckTop();lua. ... 
- JDK原子类操作
			JDK原子类操作及原理 在JDK5之后,JDK提供了对变量的原子类操作, java.util.concurrent.atomic里都是原子类 原子类的分类 原子更新基本类型 原子更新数组 原子更新抽象 ... 
- FXP登录Linux报错
			1.用FXP登录Linux报错: [info] subsystem request for sftp failed, subsystem not found.[右] [execute] /usr/li ... 
- Nodejs chrome 调试node-inspector
			1.下载扩展: 全局安装 npm install -g node-inspector 2.开启debug调试: node --debug[=port] filename (默认端口5858)node ... 
- user-select详解
			语法: user-select:none | text | all | element 默认值:text 适用于:除替换元素外的所有元素 继承性:无 动画性:否 计算值:指定值 取值: none: 文 ... 
- LINUX一网卡多IP设置
			方法1:少量IP手动绑定(这里以绑定IP到eth0为例,其它网卡的话修改相应的文件名即可) 1.复制ifcfg-eth0的网卡配置文件并改名为ifcfg-eth0:0 [root@akinlau /] ... 
- UVA 10572 Black & White (状压DP)
			题意:有一个n*m的矩阵,其中部分格子已经涂黑,部分涂白,要求为其他格子也上黑/白色,问有多少种涂法可以满足一下要求: (1)任意2*2的子矩阵不可以同色. (2)所有格子必须上色. (3)只能有两个 ... 
