5递归和二分算法
一 .递归
递归的定义——在一个函数里再调用这个函数本身
递归的最大深度-997
例子算年龄 问你a几岁,a比b大2岁,b比c大2岁,c是40岁,问你a几岁?
# def age(n): # if n == 3: # return 40 # else: # return age(n+1)+2 # print(age(1))
二. 二分算法(递归实现)
l = [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]
1 def cal(l,num,start,end): 2 ''' 3 4 :param l: 是列表 5 :param num: 要找的数字 6 :param start: 开始索引 7 :param end: 结束索引 8 :return: 9 ''' 10 if start<end: 11 mid = (end-start)//2 +start ##mid代表索引 12 # print(start,end) 13 14 if l[mid]< num: 15 return cal(l,num,mid+1,end) 16 elif l[mid]> num: 17 return cal(l,num,start,mid-1) 18 else: 19 return mid,l[mid] 20 else: 21 return '没找到' 22 print(cal(l,53,0,len(l)-1))