递归

  递归算法是指一般通过函数或子进程来实现,在函数或子进程的内部,直接或间接地调用自己的算法,说白了就是自己调自己

  注:

    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.递归算法实现二分法查找

最新文章

  1. 数据结构(DataStructure)与算法(Algorithm)、STL应用
  2. JqueryEasyUI 解决IE下datagrid无法刷新的问题
  3. C++构造函数和析构函数调用虚函数时都不会使用动态联编
  4. C#的编译
  5. Java多线程初学者指南(11):使用Synchronized块同步方法
  6. HDU-1598 find the most comfortable road
  7. SQL 分组 加列 加自编号 自编号限定 分类: SQL Server 2014-11-25 15:41 283人阅读 评论(0) 收藏
  8. 跟我学android-Android应用基本组件介绍(五)
  9. iPhone 5,6,6 plus 尺寸
  10. jsp:setProperty
  11. struts1吊牌&amp;lt;logic:iterate&amp;gt;
  12. 使用WCF Data Service 创建OData服务
  13. IE6 7 父级元素的overflow:hidden 是包不住子级的relative
  14. Word常用实用知识1
  15. 记录:使用rpm安装JDK
  16. shiro缓存管理
  17. 软件工程实践-WC项目之C实现
  18. Android热修复原理
  19. SerializeField和HideInInspector
  20. C# 解决SharpSvn启动窗口报错 Unable to connect to a repository at URL &#39;svn://....&#39;

热门文章

  1. jchdl - GSL实例 - LogicalLeft
  2. Java并发编程 (二) 并发基础
  3. Java实现 蓝桥杯 算法训练 Anagrams问题
  4. Java实现 LeetCode 494 目标和
  5. java实现第六届蓝桥杯切开字符串
  6. ArrayDeque使用&amp;实现原理分析
  7. FTP服务器上传工具,FTP服务器上传工具下载!
  8. Java Review (一、Java开发环境)
  9. RabbitMQ(2)---高级使用
  10. 分布式数据库PolonDB 云端发力未来数据处理需求