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 全选 ...
随机推荐
- 牛客寒假6-G.区间或和
链接:https://ac.nowcoder.com/acm/contest/332/G 题意: 求a|(a+1)|(a+2)|...|(b-1)|b. 思路: 求a-b的差的每一个二进制位 自己也看 ...
- SNMP4J 总结
一.SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现SNMP ...
- spring security 5 There is no PasswordEncoder mapped for the id "null" 错误
转载请注明出处 http://www.cnblogs.com/majianming/p/7923604.html 最近在学习spring security,但是在设置客户端密码时,一直出现了一下错误提 ...
- WPF中获取指定坐标依赖对象数据项
上图中红色框区域是一个自定义的ListBox控件,需要实现的功能是,点击红框区域中某项时,获取当前选中项的数据项 控件的MouseDown事件部分代码为: var x = TreeHelper.Fin ...
- vs 2017注册码 激活码
Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QFVisual Studio 2017(VS2017 ...
- 【转】HashMap 和 HashTable 到底哪不同 ?
2017/05/29 | 分类: 基础技术 | 2 条评论 | 标签: HASHMAP, HASHTABLE 分享到: 原文出处: 程序员赵鑫 HashMap和HashTable有什么不同?在面试和被 ...
- uvm_reg_model——寄存器模型(一)
对于一个复杂设计,寄存器模型要能够模拟任意数量的寄存器域操作.UVM提供标准的基类库,UVM的寄存器模型来自于继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器 ...
- Git服务器和Git权限管理应用GITLAB安装方法
首先声明,本文使用的服务器是Centos 6.5,在其他版本的LINUX上运行不保证也是一样的效果. 顺便说下 来波点赞 来波收藏和推荐 有什么问题 我会一直关注评论的 想放一张最终图吧 其中主要涉 ...
- 洛谷 2543 [AHOI2004]奇怪的字符串
题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 010101 ...
- 洛谷 P2068 统计和
题目描述 给定一个长度为n(n<=100000),初始值都为0的序列,x(x<=10000)次的修改某些位置上的数字,每次加上一个数,然后提出y (y<=10000)个问题,求每段区 ...