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))

 

posted @ 2018-05-10 22:23  huningfei  阅读(363)  评论(0编辑  收藏  举报
levels of contents