遞迴與二分演算法

2021-09-25 11:11:54 字數 1271 閱讀 9002

遞迴:在乙個函式裡呼叫這個函式本身

修給遞迴的最大深度

import sys

print(sys.setrecursionlimit(100000))

遞迴實現**選單

1 menu =,6'

網易': {},7'

google

': {}8},

9'中關村'

: ,11

'汽車之家

': {},12'

youku

': {},

13},14'

上地': ,16

},17

},18'昌平

': ,21'

北航': {},

22},23'

天通苑'

: {},24'

回龍觀'

: {},

25},26'

朝陽': {},27'

東城': {},

28},29'

上海': 33}34

},35'閘北

': 38}

39},40'

浦東': {},

41},42'

山東': {},43}

4445

defthree(dic):

46for key in

dic:

47print

(key)

48 k = input('

>>>>>>>')

49if k in

dic:

50three(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))

折半查詢法(遞迴二分演算法)(非遞迴二分演算法)

include include include define max 10001 using namespace std int a max key intsearch int bot,int top 傳過陣列下標來,恰好可以呼叫全域性變數a max 如果傳過來陣列,位置變動不如下標容易 else ...

二分查詢遞迴演算法

使用此演算法的前提是,要查詢的範圍為有序範圍。一組數 num 9 left mid right 步驟 1.left為最左端元素的下標,right為最右端元素的下標,mid為查詢區間的中間元素,key為要查詢的元素。2.當left right的時候,比較num mid 和key 1 num mid k...

二分查詢的非遞迴與遞迴演算法

一.引入 假設乙個已經 排好序的陣列a n 若要搜尋其中某個元素x,一般想到的是逐個查詢,倘若x剛好在a n 則最壞的情況需要n次比較,如若x不在陣列a中,則更加得不償失.二分查詢作為乙個典型的分支策略,實現了對n個排好序的陣列進行折半查詢,每次取a n 2 和x比較,找到則返回下標,如果a n 2...