day 16递归函数,二分查找

一.递归函数


'''
alex 比 佩奇 大两岁  n = 4
佩奇 比 文周 大两岁  n = 3
文周 比 太白 大两岁  n = 2
太白 26岁            n = 1
'''
def age(n):
    if n == 1:
        return 26
    else:
        return age(n-1) + 2
print(age(4))  # age(3) + 2

二.二分之查找法

# 第一版  原列表发生改变,导致索引改变.
# l1 = [2, 3, 5, 10, 15, 16, 18, 19]
# def two_find(l,aim):
#     mid_index = len(l) // 2
#     if aim > l[mid_index]:
#         return two_find(l[mid_index+1:],aim)
#     elif aim < l[mid_index]:
#         return two_find(l[:mid_index], aim)
#     elif aim == l[mid_index]:
#         return mid_index
#     else:
#         return None
# print(two_find(l1,18))
# print(two_find(l1,3))
# print(two_find(l1,10))

# 第二版  原列表不发生改变,你的min_index = (end - start) // 2 + start
# l1 = [2, 3, 5, 10, 15, 16, 18]
#
# def two_find(l,aim,start=0,end=None):
#     end = len(l) - 1 if end is None else end
#     mid_index = (end - start) // 2 + start
#     '''
#         第一次: aim:15 start: 0  end: 6  min_index: 3  中间值:10  aim > 10
#         第二次: aim:15 start: 4  end: 6  min_index: 5  中间值:16  aim < 16
#         第三次: aim:15 start: 4  end: 5  min_index: 4  中间值:15  aim = 15
#         '''
#     if start <= end:
#         if aim > l[mid_index]:
#             return two_find(l, aim, start=mid_index+1, end=end)
#         elif aim < l[mid_index]:
#             return two_find(l, aim, start=start, end=mid_index)
#         elif aim == l[mid_index]:
#             return mid_index
#         else:
#             return None
#     else:
#         return None
# print(two_find(l1,15))

posted @ 2018-06-22 16:38  mike1607  阅读(92)  评论(0)    收藏  举报