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 全选 ...
随机推荐
- LIS的简单应用:UVA-437
上一次紫芝详细地介绍了动态规划中的经典问题LIS,今天我们抽出一个类似思想的简单题目进行实践练习. The Tower of Babylon(巴比伦塔) Perhaps you have heard ...
- Gym - 101810D ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- flask 学习app代码备份
#!/usr/bin/python # -*- coding: UTF-8 -*- from flask import Flask, url_for from flask import request ...
- 转 PHP函数---$_Get()和$_Post()的用法
一.$_Get()和$_Post()函数是用来传值的,即对应两种提交表单的方法,get和post. 二.$_Get方法 (1)获取通过URL的传值 Example 1 新建两个PHP文件,1.php, ...
- UESTC - 1544 当咸鱼也要按照基本法 组合数学 容斥原理
http://acm.uestc.edu.cn/#/problem/show/1544 考虑一下2.2.2这样的情况.答案应该是n / 2 如果只选一个的情况下,对答案的贡献是正的,但是这里有三个,也 ...
- myBati初学
创建数据库(y2165) MyBatis环境搭建1.在pom.xml引入依赖2.得替换build节点,为了让程序编译在main中所有子包下的配置文件3.构建大配置,位于resources<?xm ...
- kafka基础三
消费者消费消息过程(一) 消费者组 消费者是以消费者组consumer group的方式进行消息消费的,一个消费者组是由一个或者多个消费者组成的,共同消费一个topic,在每个分区同一时间只能由消费者 ...
- PostgresSQL 数组包含@>
原文链接:http://www.postgresql.org/docs/9.5/static/functions-array.html 9.18. Array Functions and Operat ...
- 提升 Web开发性能的 10 个技巧
随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键.高度联结的世界意味着用户对网络体验提出了更严苛的要求.假如你的网站不能做到快速响应,又或你的App存在延迟,用户很快就会移情 ...
- activity间的传参
Intent有两个作用:激活组件和附带数据 激活另一个activity的方法显示意图: 1. Intent intent = new Intent(); intent.setClass ...