递归函数
在一个函数里又调用这个函数本身。
递归的最大深度:998
原因:递归函数如果不受外力的阻止会一直执行下去,每一次函数调用都会产生一个属于他自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,Python为了杜绝此类现象,强制的将递归层数控制在了997。
我们可以通过一些手段修改这个默认值:
import sys sys.setrecursionlimit(1000)
递归示例:
利用递归循环求100以内的数的和:
def func(n): if n == 1: return 1 else: return func(n-1)+n print(func(100))
二分查找算法
代码:
#二分查找 l1 = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] #简单版 def two_find(l,aim): mid = (len(l)-1) // 2 if l: # print(mid) if aim > l[mid]: two_find(l[mid+1:],aim) elif aim < l[mid]: two_find(l[:mid],aim) elif aim == l[mid]: print(mid) else: print('没找到') two_find(l1,39) #上面的方法因为索引一直在变,所以查不到确定的索引 #升级版 def two_find(l,aim,start=0,end=None): end = len(l) if end == None else end mid = (end - start)//2 + start if end >= start: if aim > l[mid]: two_find(l, aim, start=mid + 1, end=end) elif aim < l[mid]: two_find(l, aim, start=start, end=mid - 1) elif aim == l[mid]: print('找到了,%s' % mid) else: print('没找到')