博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归、二分查找法
阅读量:6895 次
发布时间:2019-06-27

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

递归:就是函数在运行的过程中调用自己

  • 缺点:占内存
  • 优点:会让代码变简单

递归中的返回值:

  • 不要看到return就认为已经返回了,要看返回操作是在递归到第几层的时候发生的,然后返回给了谁
  • 如果不是返回给最外层函数,调用者就接收不到,需要再分析,看如何把结果返回回来

用递归实现阶乘:

def func(n):    print(n)  # 4 3 2 1 0    if n == 0:  # 等于0就运算完了        return 1    return n * func(n - 1)  # 每次递归相乘,n值都比之前小1ret = func(4)print(ret)  # 24

二分查找法:

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]def b_search(l, inp, start=0, end=None):    if inp <= l[len(l)-1]:        end = len(l) if end is None else end        mid_index = (end - start)//2 + start        if start <= end:            if l[mid_index] < inp:                return b_search(l, inp, start=mid_index+1, end=end)            elif l[mid_index] > inp:                return b_search(l, inp, start=start, end=mid_index-1)            else:                return mid_index        else:            return "这个值不存在"    else:        return "这个值不存在"inp = int(input("请输入一个数字:"))ret = b_search(l, inp)print(ret)

 

转载于:https://www.cnblogs.com/believepd/p/9610397.html

你可能感兴趣的文章
for 循环
查看>>
Entity Framework技术系列之0:开篇
查看>>
201621123048《Java程序设计》第五周学习总结
查看>>
mac编辑器vim美化
查看>>
MD5摘要算法简析
查看>>
《30天自制操作系统》学习笔记一
查看>>
Python.tornado.2.tornado.options
查看>>
mysql关于or的索引问题
查看>>
初遇Linux
查看>>
onclick事件没有反应的五种可能情况
查看>>
vue----webpack----对vuex的理解
查看>>
08----mockjs处理前端传来的路径,获取?后面的值
查看>>
蓝桥杯 算法训练 最短路 [ 最短路 bellman ]
查看>>
修改 IIS6.0 时间格式的问题。
查看>>
C# IS 和 AS 的用法和区别
查看>>
软件测试过程中的缺陷密度计算问题
查看>>
图论算法----最短路
查看>>
[备用] 百度地图兴趣点抓取
查看>>
《About Face 3:交互设计精髓》读书笔记(一)
查看>>
invalid derived query的解决办法
查看>>