Python3-算法-递归
递归
递归算法是指一般通过函数或子进程来实现,在函数或子进程的内部,直接或间接地调用自己的算法,说白了就是自己调自己
注:
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)
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)
posted on 2017-03-17 11:17 AustralGeek 阅读(166) 评论(0) 编辑 收藏 举报