Python3-算法-递归
2024-09-06 04:20:28
递归
递归算法是指一般通过函数或子进程来实现,在函数或子进程的内部,直接或间接地调用自己的算法,说白了就是自己调自己
注:
1.在使用递归的时候,必须要有一个递归出口,即一个明确的结束条件,否则就是死循环
2.递归算法解题通常显得很简洁,但递归的运行效率较低,一般不提倡使用
3.递归要一层一层的进,然后在一层一层的出,所以因此想拿到最里面一层的局部变量的值,靠return是很难拿到的(至少我不会)
4.Python3中允许的最大递归层数目前是999层
# 函数实现
def fibonacci(arg1, arg2, stop):
print(arg1)
arg3 = arg1 + arg2
if arg3 < stop: # 递归出口
fibonacci(arg2, arg3, stop) # 调用自己,实现递归 # 调用
fibonacci(0, 1, 100)
1.递归算法实现打印斐波那契数列
class BisectionSearch:
"""
二分法查找类
查找的是从小到大的顺序序列
"""
__result = False # 查找结果 def __search(self, target, source):
"""
内部递归查找算法
:param target: 查找目标
:param source: 数据源
:return: None
"""
mid_idx = int(len(source) / 2)
if 1 != mid_idx:
if target < source[mid_idx]:
self.__search(target, source[:mid_idx])
elif target > source[mid_idx]:
self.__search(target, source[mid_idx:])
else:
self.__result = True
else:
self.__result = target in source def find_target(self, target, source):
"""
对外提供的查找方法
:param target: 查找目标
:param source: 数据源
:return: 是否找到
"""
self.__search(target, source)
return self.__result # 调用
bs = BisectionSearch()
source_list = [i for i in range(1, 1000, 3)]
find_target = 10
result = bs.find_target(find_target, source_list)
print("查找结果:", result)
2.递归算法实现二分法查找
最新文章
- 数据结构(DataStructure)与算法(Algorithm)、STL应用
- JqueryEasyUI 解决IE下datagrid无法刷新的问题
- C++构造函数和析构函数调用虚函数时都不会使用动态联编
- C#的编译
- Java多线程初学者指南(11):使用Synchronized块同步方法
- HDU-1598 find the most comfortable road
- SQL 分组 加列 加自编号 自编号限定 分类: SQL Server 2014-11-25 15:41 283人阅读 评论(0) 收藏
- 跟我学android-Android应用基本组件介绍(五)
- iPhone 5,6,6 plus 尺寸
- jsp:setProperty
- struts1吊牌&;lt;logic:iterate&;gt;
- 使用WCF Data Service 创建OData服务
- IE6 7 父级元素的overflow:hidden 是包不住子级的relative
- Word常用实用知识1
- 记录:使用rpm安装JDK
- shiro缓存管理
- 软件工程实践-WC项目之C实现
- Android热修复原理
- SerializeField和HideInInspector
- C# 解决SharpSvn启动窗口报错 Unable to connect to a repository at URL &#39;svn://....&#39;