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

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

# 递归函数def func():    print('hello')    func()func()# 递归深度,你可以自己调用自己的次数,官方文档中递归最大深度是1000.在这之前就会给你报错

 递归很好内存,能用循环就用循环

# 遍历 E:/视频 文件夹,打印出所有的文件和普通文件的文件名import osdef func(filepath,n):    # 1.打开这个文件夹    files = os.listdir(filepath)    # 2.拿到每一个文件名    for file in files:  # 文件名        # 3.获取路径        f_d = os.path.join(filepath,file)  # E:/视频/文件名        # 4.判断是否是文件夹        if os.path.isdir(f_d):            # 5.如果是文件夹,继续再来一遍                print('\t'*n,file,':') # 打印文件名                func(f_d, n+1)        else:            print('\t'*n,file)func('E:/视频',0)

 

使用二分法查找可以提高效率,前提条件:有序序列

核心:掐头去尾取中间,一次砍一半

两种算法:常规循环,递归循环

 

lst = [22,33,44,55,66,77,88,99,101,238,345,456,678,789]n =79left = 0right = len(lst) - 1while left <= right:  # 边界,当右边比左边还小的时候退出循环    mid = (left+right)//2  # 必须是整除,因为索引没有小数    if lst[mid] > n:        right = mid -1    if lst[mid] < n:        left = mid +1    if lst[mid] == n:        print('找到了这个数')        breakelse:    print('没有这个数')

 

递归来完成二分法

lst = [22,33,44,55,66,77,88,99,101,238,345,456,678,789]def func(n,left,right):    if left <= right: # 边界        mid = (left+right)//2        if n>lst[mid]:            left=mid+1            return func(n,left,right) # 递归        if n

 

# 时间复杂度和空间复杂度降到最低lst1 = [3,4,5]lst2 = [0,0,0,0,0,0]for el in lst1:    lst2[el] = 1print(lst2[2] == 1)

 

转载于:https://www.cnblogs.com/Little-Raccoon/p/10844284.html

你可能感兴趣的文章
中国最强的人工智能学术会议来了
查看>>
Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
查看>>
Osmocom-BB中cell_log的多种使用姿势
查看>>
主库 归档 删除策略
查看>>
linux服务器多网卡bond
查看>>
Chrome 更新策略大变:优先安装 64 位版本
查看>>
《Linux从入门到精通(第2版)》——导读
查看>>
路过下载攻击利用旧版 Android 漏洞安装勒索软件
查看>>
ThinkSNS 六大子版本体验及源码下载
查看>>
《算法基础》——1.5实际因素
查看>>
《Java数字图像处理:编程技巧与应用实践》——第3章 基本Swing UI组件与图像显示 3.1 JPanel组件与BufferedImage对象的显示...
查看>>
为什么有人讨厌 Google 的新 Logo?
查看>>
2022 年 AI 会发展成什么样子,IBM 做出了 5 大预测
查看>>
腾讯2017暑期实习编程题3
查看>>
整理收藏一份PHP高级工程师的笔试题
查看>>
Intellij IDEA 构建Spring Web项目 — 用户登录功能
查看>>
[AHOI2013]作业
查看>>
git push被忽略的文件 处理
查看>>
C#中用ILMerge将所有引用的DLL打成一个DLL文件
查看>>
PHP生成HTML静态页面
查看>>