- Python 数据结构和算法教程
- Python-DS 主页
- Python-DS简介
- Python-DS 环境
- Python-数组
- Python - 列表
- Python - 元组
- Python-字典
- Python - 二维数组
- Python-矩阵
- Python - 集合
- Python - 地图
- Python - 链表
- Python-堆栈
- Python-队列
- Python-出队
- Python - 高级链表
- Python-哈希表
- Python - 二叉树
- Python - 搜索树
- Python - 堆
- Python - 图表
- Python - 算法设计
- Python——分而治之
- Python - 递归
- Python-回溯
- Python - 排序算法
- Python - 搜索算法
- Python - 图算法
- Python-算法分析
- Python - 大 O 表示法
- Python - 算法类
- Python - 摊销分析
- Python - 算法论证
- Python 数据结构和算法有用资源
- Python - 快速指南
- Python - 有用的资源
- Python - 讨论
Python - 递归
递归允许函数调用自身。代码的固定步骤会一次又一次地执行以获取新值。我们还必须设置标准来决定递归调用何时结束。在下面的示例中,我们看到了二分搜索的递归方法。我们采用一个排序列表并将其索引范围作为递归函数的输入。
使用递归的二分搜索
我们使用python实现二分查找的算法,如下所示。我们使用有序的项目列表,并设计一个递归函数来接受列表以及开始和结束索引作为输入。然后,二分搜索函数调用自身,直到找到搜索到的项目或得出列表中不存在该项目的结论。
例子
def bsearch(list, idx0, idxn, val): if (idxn < idx0): return None else: midval = idx0 + ((idxn - idx0) // 2) # Compare the search item with middle most value if list[midval] > val: return bsearch(list, idx0, midval-1,val) else if list[midval] < val: return bsearch(list, midval+1, idxn, val) else: return midval list = [8,11,24,56,88,131] print(bsearch(list, 0, 5, 24)) print(bsearch(list, 0, 5, 51))
输出
执行上述代码时,会产生以下结果 -
2 None