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

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

递归(难点)

        自己调用自己
        递归的入口
        递归的出口: return
        递归的循环条件:动
        循环树形结构

# import os # def func(file_path,ceng): #     lst = os.listdir(file_path) #     for file in lst: #         full_path = os.path.join(file_path, file) #         if os.path.isdir(full_path): #             print("\t"*ceng, file) #             func(full_path, ceng+1) #         else: #             print("\t"*ceng, file) #     else: #         return # func("F:\python视频",0)

   二分法查找
        核心思想: 掐头结尾取中间.
        前提条件: 有序.

lst = [1, 8, 16, 32, 55, 78, 89, 1, 5, 4, 1, 3, 4, 8, 9, 5] # #二分法查找数字首先要排序 lst = sorted(lst) # print(lst) #[1, 1, 1, 3, 4, 4, 5, 5, 8, 8, 9, 16, 32, 55, 78, 89] n = int(input("请输入一个数字: ")) left = 0 right = len(lst)-1 while left <= right:     mid = (left + right) // 2  #索引只能是整数     if n > lst[mid]:         left = mid+1     elif n < lst[mid]:         right = mid - 1     else:         print("刚刚好,所在位置%s" % mid)         break else:     print("查找的数不存在") #函数第一套方案 def func(n,lst):     left = 0     right = len(lst)-1     if left <= right:         mid = (left+right)//2         if n > lst[mid]:             new_list = lst[mid+1:]             return func(n, new_list)#####################         elif n < lst[mid]:             new_list =lst[: mid]             return func(n, new_list)#####################         else:             print("刚刚好,所在位置%s"% mid)             return True     else:         return False print(func(3, lst)) #函数第二套方案 def func(n, lst, left, right):     if left <= right:         mid = (left+right)//2         if n > lst[mid]:             left = mid + 1         elif n < lst[mid]:             right = mid - 1         else:             return True         return func(n, lst, left, right)     else:         return False ret = func(89,lst,0,len(lst)-1) print(ret) #关键字参数 def func(n, lst, left=0, right=None):     if right == None:         right = len(lst)-1     if left <= right:         mid = (left+right)//2         if n > lst[mid]:             left = mid + 1         elif n < lst[mid]:             right = mid - 1         else:             return True         return func(n, lst, left, right)     else:         return False ret = func(90,lst) print(ret)

转载于:https://www.cnblogs.com/verena/p/9683102.html

你可能感兴趣的文章
POJ 3740 Easy Finding (DLX模板)
查看>>
MySQL 处理重复数据
查看>>
关于typedef的用法总结(转)
查看>>
【strtok()】——分割字符串
查看>>
Linux下安装rabbitmq
查看>>
曹德旺
查看>>
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>
响应式web设计之CSS3 Media Queries
查看>>
实验三
查看>>
机器码和字节码
查看>>
环形菜单的实现
查看>>
【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】...
查看>>
34 帧动画
查看>>
二次剩余及欧拉准则
查看>>
Centos 7 Mysql 最大连接数超了问题解决
查看>>
thymeleaf 自定义标签
查看>>