python日记----2017.7.31--递归函数

递归函数:
递归的定义——在一个函数里再调用这个函数本身

现在我们已经大概知道刚刚讲的story函数做了什么,
就是在一个函数里再调用这个函数本身,
这种魔性的使用函数的方式就叫做递归。
1.从前有座山的故事:
a.利用while循环打印出来:
while True:
story = "
从前有个山,山里有座庙,庙里老和尚讲故事,
讲的什么呢?
"
print(story)

b.利用递归函数:
def story():
s = """
从前有个山,山里有座庙,庙里老和尚讲故事,
讲的什么呢?
"""
print(s)
story()

story()
2.递归的最大深度----997
a.def foo(n):
print(n)
n += 1
foo(n)
foo(1)
b.修改最大深度:
import sys
print(sys.setrecursionlimit(100000))
def foo(n):
print(n)
n += 1
foo(n)
foo(1)
(最大根据电脑本身有关)

3.关于年龄的例子:
def age(n):
if n == 1:
return 40
else:
return age(n-1)+2

print(age(4))

4.三级菜单
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
def menu_l(menu):
while True:
for item in menu:
print(item)
key = input('>>>')
if key in menu:
menu_l(menu[key])
else:
break
5.二分查找算法
def func(l, aim,start = 0,end = len(l)-1 ):
mid = (start+end)//2
if not l[start:end+1]:
return
elif aim > l[mid]:
return func(l,aim,mid+1,end)
elif aim < l[mid]:
return func(l,aim,start,mid-1)
elif aim == l[mid]:
print("bingo")
return mid

index = func(l,68)
print(index)

原文地址:https://www.cnblogs.com/De-Luffy/p/7265109.html