8.12 学习笔记

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]
def find(l,aim,start=0,end=None):
end=len(l) if end is None else end
mid_index = (end- start) // 2 + start
if start<=end:
if l[mid_index]<aim:
return find(l,aim,start=mid_index+1,end=end) #统一化函数名,内部调用自己
elif l[mid_index]>aim:
return find(l,aim,start=start,end=mid_index-1)
else:
return 'found is %d'%(mid_index)
else:return 'not found'
ret=find(l,16)
print(ret)
#递归函数
# 了解什么是递归 : 在函数中调用自身函数
# 最大递归深度默认是997/998 —— 是python从内存角度出发做得限制
# 能看懂递归
# 能知道递归的应用场景
# 初识递归 ——
# 算法 —— 二分查找算法
# 三级菜单 —— 递归实现
#RecursionError: maximum recursion depth exceeded while calling a Python object
# 递归的错误,超过了递归的最大深度
#调节方式:
# import sys
# sys.setrecursionlimit(1000000)
# n = 0
# def story():
# global n
# n += 1
# print(n)
# story()
# story()
# 返回值
# 不要只看到return就认为已经返回了。要看返回操作是在递归到第几层的时候发生的,然后返回给了谁。
# 如果不是返回给最外层函数,调用者就接收不到。
# 需要再分析,看如何把结果返回回来。
#斐波那契
#默认参数的陷阱
#默认参数也有坑,看看下面的代码,先定义一个list,添加一个end再返回:
def add_end(L=[]):
L.append('END')
return L
ret=add_end()
print(ret) #['END']
ret=add_end()
ret=add_end()
print(ret) #['END', 'END', 'END']
#这里需要解释一下,Python函数在定义的时候,默认参数L的值就被计算出来了,即[]。此时L指向[]。
# 所以如果L中的内容改变了,下次调用引用的内容也就不再是[]了。所以要牢记一点定义默认参数必须指向不可变对象!。
#三级菜单

menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}



#print(list(menu))+

#堆栈实现
# l = [menu]
# while l:
# for key in l[-1]:print(key)
# k = input('input>>').strip() # 北京
# if k in l[-1].keys() and l[-1][k]:l.append(l[-1][k])
# elif k == 'b':l.pop()
# elif k == 'q':break
# #三级菜单作业么?现在咱们用递归来写一下~
# def threeLM(dic):
# while True:
# for k in dic:print(k)
# key = input('input>>').strip()
# if key == 'b' or key == 'q':return key
# elif key in dic.keys() and dic[key]:
# ret = threeLM(dic[key])
# if ret == 'q': return 'q'
#
# threeLM(menu)
posted @ 2018-08-16 15:32  SHORI  阅读(140)  评论(0编辑  收藏  举报