遞歸的含義:在一個函數裡再調用這個函數本身,這就是遞歸。
在Python裡遞歸的最大限度是997,最大遞歸的限度可以修改
import sys
print(sys.setrecursionlimit(100000)
遞歸與三級菜單
menu = {
'北京': {
'海澱': {
'五道口': {
'soho': {},
'網易': {},
'google': {}
},
'中關村': {
'愛奇藝': {},
'汽車之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龍觀': {},
},
'朝陽': {},
'東城': {},
},
'上海': {
'闵行': {
"人民廣場": {
'炸雞店': {}
}
},
'閘北': {
'火車戰': {
'攜程': {}
}
},
'浦東': {},
},
'山東': {},
}
def three(menu):
while True:
for i in menu:
print(i)
name = input('your name : ')
if name in menu:
three(menu[name])
elif name == 'q':
break
else:
print('不存在的 ')
continue
three(menu)
二分位法 與遞歸
l = [2,4,5,7,8,9,12,13,14,15,17,18,19,23,25,27,29]
def erf(l,num):
mid = len(l)//2
if l[mid] > num:
l = l[:mid]
return erf(l,num)
elif l[mid] < num:
l = l[mid+1:]
return erf(l,num)
else:
return l[mid]
print(erf(l,18))
二分位法與遞歸進階版本
l = [2,4,5,7,8,9,12,13,14,15,17,18,19,23,25,27,29]
def erf(l,num,start= 0,end = 0):
if start < end:
mid = (start + end)//2
if l[mid] > num:
end = mid
return erf(l,num,start,end)
elif l[mid] < num:
start = mid + 1
return erf(l,num,start,end)
else:
return mid
else:
print('沒有這個值!!')
print(erf(l,25,start = 0,end = len(l)-1))
遞歸 與猜年齡
Alex 比egon 大2歲
egon 比袁浩大2歲
袁浩比哪吒大2歲
娜紮比太白大2歲
太白是40歲,請問Alex是多少歲?用遞歸函數表達
age1 = 40
age2 = nezha
age3 = yuanhao
age4 = egon
age5 = alex
def age(n):
if n == 1:
return 40
else:
ret = age(n-1)
return (ret +2)
print(age(5))
轉載于:https://www.cnblogs.com/niehaidong111/p/7263519.html