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

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

递归

  函数自己调用自己

  最大深度:1000,一般到不了1000就停了

   setrecursionlimit() 方法可以修改深度

  使用递归方法打印1到10

def fun(x,y):    if x > y:        return    else:        print(x)        fun(x+1,y)fun(1,10)#结果:#1#2#3#4#5#6#7#8#9#10

  

二分法

  核心:掐头去尾取中间,一次砍一半   两种算法:常规循环,递归循环   常规循环
def f(arr,t):    low = 0    height = len(arr)-1    while height >= low:        mid = (low+height) // 2        if t < arr[mid]:   #low:mid            height = mid - 1        elif t > arr[mid]:  # mid:height            low = mid + 1        else:            print("找到了在第%s个位置" % (mid + 1))            return    print("没有找到此值")arr = [1,3,5,13,17,19,20,21,26,30]f(arr,21)f(arr,13)f(arr,38)#结果#找到了在第8个位置#找到了在第4个位置#没有找到此值

  递归循环

arr = [1,3,5,13,17,19,20,21,26,30]def f(t,low,height):    if height >= low:        mid = (low+height) // 2        if t < arr[mid]:   #low:mid            height = mid - 1            return f(t,low,height)        elif t > arr[mid]:  # mid:height            low = mid + 1            return f(t,low,height)        else:            print("找到了")            return mid    else:        print("没有找到此值")        return -1ret = f(26,0,len(arr)-1)print(ret)ret = f(11,0,len(arr)-1)print(ret)#结果#找到了#8#没有找到此值#-1

  

转载于:https://www.cnblogs.com/JinMuBaoBao/p/9481950.html

你可能感兴趣的文章
Fetch使用
查看>>
第三次实验作业总结
查看>>
redis 学习(8)-- redis 客户端 -- Jedis
查看>>
正则表达式
查看>>
bzoj1385 [Baltic2000]Division expression
查看>>
字符的读入问题
查看>>
五子棋计算思路
查看>>
83. 移除已排序链表中重复的节点 Remove Duplicates from Sorted List
查看>>
linux的联网以及语言的更改
查看>>
145-PHP 使用<<<和HTML混编(一)
查看>>
栈的顺序存储结构以及实现
查看>>
【python】-- Socket粘包问题 ,解决粘包的几种方法、socket文件下载,md5值检验
查看>>
2016-09-12
查看>>
CDHD驱动器——ServoStudio配置高创伺服速度模式不转
查看>>
完整版本的停车场管理系统源代码带服务端+手机android客户端
查看>>
【UOJ 92】有向图的强联通分量
查看>>
bzoj 1192
查看>>
Windows10/Servers 2016的TrustedInstaller权限获取(及乱改System后救砖
查看>>
关于mysql转移数据库时没有导出sql脚本的情况下,如何导入数据到新的数据库中...
查看>>
链表逆序
查看>>