1、引子
大师 L. Peter Deutsch 说过:
To Iterate is Human, to Recurse, Divine.
中文译为:人理解迭代,神理解递归
2、什么是递归
def fun(): print("dd") fun() fun()
3、缺点
RecursionError: maximum recursion depth exceeded while decoding a JSON array from a unicode string
递归错误:超过递归的最大深度(不大于1000)
错误原因:python从内存角度出发做的限制
修改自身最大深度:
import sys sys.setrecursionlimit(10000)#设置最大深度10000
ps:如果递归次数太多,就不适合使用递归来解决问题(太占内存)
4、优点
5、应用
def find(list,aim): mid_index = len(list) // 2 print(list[mid_index]) if list[mid_index] < aim: find(list[mid_index +1:] ,aim) elif list[mid_index] > aim: find(list[:mid_index] ,aim) else: print(‘找到了‘,mid_index,list[mid_index]) list=[1,2,3,4,5,6,7,8,9,10] find(list,7)
优化:
def find2(list,aim,start=0,end=None):#优化二分查找 end = len(list) if end == None else end mid_index=(end-start) // 2 + start print(mid_index) if list[mid_index] < aim: find2(list,aim,start=mid_index+1,end=end) elif list[mid_index] > aim: find2(list,aim,start=start,end=mid_index-1) else: print(‘找到了‘, mid_index, list[mid_index]) list=[1,2,3,4,5,6,7,8,9,10] erfind2(list,7)
原文:https://www.cnblogs.com/billie52707/p/12810725.html