python之路——17
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594
复习
1.迭代器
2.生成器
3.内置函数
1.学习55个
2.带key的,max min filter map sorted
4.匿名函数
lambda
学习内容
1.递归函数
了解递归函数:函数内调用函数自己
缺点:占内存; 优点:简化代码
看懂递归函数:多到即便
应用场景:算法相同,重复
初识算法
计算方法:
查找数据
排序
最短路径
算法——二分法查找
三级菜单——递归实现
代码区
1.初识递归函数
import sys sys.setrecursionlimit(10000000) n = 0 def story(): global n n += 1 print(n) story() story()
2.二分查找法的演变以及python实现
# 二分法 # v1 1.目标存在,2.只找到,索引错误 ''' l1 = [0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 8, 10, 23, 52, 66, 635, 6542] 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', mid_index) find(l1, 66) ''' # v2 ''' l1 = [0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 8, 10, 23, 52, 66, 635, 6542] def find(l, aim, start=0, end=len(l1)): mid_index = (end - start) // 2 + start if l[mid_index] < aim: find(l, aim, start=mid_index + 1, end=end) elif l[mid_index] > aim: find(l, aim, start=start, end=mid_index-1) else: print('get', mid_index, aim) find(l1, 0) ''' # 问题:1.找不到的,2.参数end用到了l1 3.函数没有函数值 4.重复 # v3 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: 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 else: return 'Not in here' l1 = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88] print(find(l1, 101))

浙公网安备 33010602011771号