遞歸與二分算法
阿新 • • 發佈:2017-07-31
調用 input 查找 bsp soho isp pen 老男孩 brush
遞歸:在一個函數裏調用這個函數本身
修給遞歸的最大深度
import sys print(sys.setrecursionlimit(100000))
遞歸實現三級菜單
1 menu = { 2 ‘北京‘: { 3 ‘海澱‘: { 4 ‘五道口‘: { 5 ‘soho‘: {}, 6 ‘網易‘: {}, 7 ‘google‘: {} 8 }, 9 ‘中關村‘: { 10 ‘例題詳解愛奇藝‘: {}, 11 ‘汽車之家‘: {}, 12 ‘youku‘: {}, 13 }, 14 ‘上地‘: { 15 ‘百度‘: {}, 16 }, 17 }, 18 ‘昌平‘: { 19 ‘沙河‘: { 20 ‘老男孩‘: {}, 21 ‘北航‘: {}, 22 }, 23 ‘天通苑‘: {}, 24 ‘回龍觀‘: {}, 25 }, 26 ‘朝陽‘: {}, 27 ‘東城‘: {}, 28 }, 29 ‘上海‘: { 30 ‘閔行‘: { 31 "人民廣場": { 32 ‘炸雞店‘: {} 33 } 34 }, 35 ‘閘北‘: { 36 ‘火車戰‘: { 37 ‘攜程‘: {} 38 }39 }, 40 ‘浦東‘: {}, 41 }, 42 ‘山東‘: {}, 43 } 44 45 def three(dic): 46 for key in dic: 47 print(key) 48 k = input(‘>>>>>>>‘) 49 if k in dic: 50 three(dic[k]) 51 three(dic)
二分查找算法:
l = [2,3,5,10,15,16,18,22,26] def find(l,aim,start,end): mid = (end+start)//2 if l[mid] > aim: #中間值大於目標值,左邊尋找 end = mid #頭部不變, return find(l,aim,start,end) elif l[mid] < aim: start= mid return find(l,aim,start,end) else: return mid print(find(l,15,start=0,end=len(l)-1))
遞歸與二分算法