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. 三级菜单——递归实现
长得丑就应该多读书。我爱学习,只爱学习,最爱学习!