博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归函数 day17
阅读量:4693 次
发布时间:2019-06-09

本文共 2528 字,大约阅读时间需要 8 分钟。

一 递归函数 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

转载于:https://www.cnblogs.com/chongdongxiaoyu/p/8474625.html

你可能感兴趣的文章
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>
Building Tablet PC Applications ROB JARRETT
查看>>
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>
android多层树形结构列表学习笔记
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>
《构建之法》第一、二、十六章阅读笔记
查看>>
arrow:让Python的日期与时间变的更好
查看>>
(转)Excel的 OleDb 连接串的格式(连接Excel 2003-2013)
查看>>
Java并发编程
查看>>
Git Stash用法
查看>>
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
postgressql数据库中limit offset使用
查看>>
测试思想-集成测试 关于接口测试 Part 2
查看>>
windows下mysql密码忘了怎么办?【转】
查看>>