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

浙公网安备 33010602011771号