遞歸調用
阿新 • • 發佈:2018-07-22
div 地板 遞歸調用 none 16px 有序列表 col inpu 找不到
1 #二分法查找列表數
2 def find_num(li,num,start=0,end=None): # start和end 為系統默認參數
3 end =len(li)if end is None else end #開始時如果end為None 則讓他為列表長度
4 li_index=(end-start)//2+start #計算中間值 //地板除取整
5 if start<end: #索引的開頭小於結尾
6 if num<li[li_index]:
7 return find_num(li,num,start=0,end=li_index-1) # 如果結果比中間數小 結尾需要重新設置
8 if num>li[li_index]:
9 return find_num(li,num,start=li_index+1,end=end) #如果結果比中間數大,開頭需要重新設置
10 elif num==li[li_index]: #如果相等 則就是他
11 return li_index
12 else: #開頭大於結尾的序號 找不到這樣的數字
13 return ‘找不到這個數‘
14
15 li=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51,53,59,61,67,71,73,79,83,89,97,101]
16 n=int(input(‘請輸入要查找的數‘))
17 f=find_num(li,n)
18 print(f)
用遞歸查找列表元素,則必須為有序列表 從大到小 或者從小到大
遞歸調用