一 递归函数 n = 1 金老板 38+2 =40 n = 2 alex n+2= 金老板 36+2 = 38 n = 3 wusir n+2 = alex wusir 36 def age(n): #n = 2 if n == 3: return 36 else: return age(n+1)+2 jin_age = age(1) # 40 print(jin_age) 求阶乘 _ 递归函数 5! = 5*4*3*2*1 # 5 * 4! fn(5) 4! = 4*3*2*1 # 4 * 3! fn(4) 3 * 2! fn(3) 2 *1! fn(2) 1 fn(1) = 1 def fn(n): #n=5 if n == 1:return 1 return fn(n-1) * n print(fn(5)) 二 算法
算法 计算的方法 99*99 = 99*(100-1) = 99*100-99*1 = 99*100-99 = 9900-99 = 9801 _ 人计算的方法 99 * 99 计算机的思维和人脑的思维是不同的 算法很难 计算机领域的 算法 是计算机认为简便的算法 查找算法 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] 66 方法一: 循环 # 5000000 4999999 方法二: l.index(66) #最正确的方法 算法 从有序的列表中查找值的位置 [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] 41 < 66 [42,43,55,56,66,67,69,72,76,82,83,88] 66 < 67 [42,43,55,56,66] 55 < 66 [56,66] 56 < 66 [66] 66 == 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): mid = len(l)//2 if l[mid] > aim: new_l = l[:mid] find(new_l,aim) elif l[mid] < aim: new_l = l[mid+1:] find(new_l, aim) elif l[mid] == aim: print('找到了:',mid,aim,l[mid]) find(l,66) def find(l,aim,start=0,end=None): if end == None:end = len(l)-1 if start <= end: mid = (end - start) // 2 + start if l[mid] > aim: return find(l,aim,start=start,end=mid-1) elif l[mid] < aim: return find(l,aim,start=mid+1,end=end) elif l[mid] == aim: return mid else: return None 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] print('ret :',find(l,18)) 1 如果要查找的值不在列表中 2 参数的简化 3 返回值的问题 递归函数完成 : 三级菜单 真题附加题 斐波那契数列fib(20) 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 = len(l)//2 if l[mid] > aim: new_l = l[:mid] find(new_l,aim) elif l[mid] < aim: new_l = l[mid+1:] find(new_l, aim) elif l[mid] == aim: print('找到了:',mid,aim,l[mid]) find(l,66) l=[] def con(n): if n==1: return 1 elif n==2: return 1 else: return f() def f(n): if n==1: return 1 elif n==2: return 1 else : return f(n-1)+f(n-2) f(4) print(f(4)) def f(n): if x